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.