Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Não entendi

Tipo como que o 4 por exemplo faz 4x3x2x1, na lógica não seria o 4x4, pq ali diz fatorial(seria4) = fatorial(4) * numero(seria4), alguém tenta me explicar pq buguei aqui!

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Fatoriais
{
    class Program
    {
        static void Main(string[] args)
        {

            //numero q irá fatorar
            int fatorial = 1;

            for (int numero = 1; numero <= 10; numero++)
            {
                fatorial = fatorial * numero;
                Console.WriteLine("O fatorial de " + numero + " = " + fatorial);
            }

            Console.ReadLine();
        }
    }
}
3 respostas
solução!

Olá Davyd, tudo certo?

Abaixo vou deixar exemplicado como o código acaba trabalhando por "baixo dos panos". Acredito que ficará melhor o entendimento pra essa parte do código fatorial = fatorial * numero;:

1 = 1 * 1
2 = 1 * 2
6 = 2 * 3
24 = 6 * 4
120 = 24 * 5
720 = 120 * 6
5040 = 720 * 7
40320 = 5040 * 8
362880 = 40320 * 9
3628800 = 362880 * 10

O programa faz a primeira multiplicação, pega esse primeiro resultado e vai multiplicando até chegar em 10.`

Se ainda tiver alguma dúvida, fique tranquilo para perguntar novamente.

Abraços e bons estudos!

Oi, Davyd, tudo bem? A Ana explicou de uma forma bem clara, onde está trabalhando com o fatorial do número anterior para obter o fatorial do número atual. E temos aqui uma implementação simples para poucos números e trabalhando de forma sequenciada( do 1 ao 10). Pesquisei um pouco mais e cheguei a seguinte implementação:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Numerics;
using System.Text;
using System.Threading.Tasks;

namespace CalculaFatorial
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Digite o número que deseja saber o fatorial:");

            int fatorialDe = Int32.Parse(Console.ReadLine());
            BigInteger fatorial = 1;

            for(int n = 1; n <= fatorialDe; n++)
            {
                fatorial *= n;
            }
                Console.WriteLine("Fatorial de " + fatorialDe + " = " + fatorial);

            Console.ReadLine();
        }
    }
}

A variável "fatorialDe", recebe o número que desejo saber o fatorial; Já a variável "fatorial", que irá receber o calculo do fatorial do referido número, foi declarada como BigInteger, pois suporta um número maior, uma vez que o fatorial de um número, pode ser muito alto. Por exemplo, o fatorial de 20: 20 X 19 X 18 X 17 X 16 X 15 X 14 X 13 X 12 X 11 X 10 X 9 X 8 X 7 X 6 X 5 X 4 X 3 X 2 X 1 = 2432902008176640000 No laço for, eu início a variável n com o valor 1 e vou incrementando até atingir o valor da variável "fatorialDe", dentro do for, é realizada a operação para obter o fatorial (1 x 2 x 3 x 4...); por fim, printo o número que desejo saber o fatorial e o seu valor.

Obrigado aos 2, me ajudaram muito !!