我正在做一个阶乘 c# 程序,但在第二次尝试后,它开始计算错误

I'm doing a factorial c# program, but after the second attempt, it starts to miscalculate

int num, i, fatorial = 1;
char resposta;
    
do
{    
    Console.WriteLine("Informe um numero e veja o seu fatorial: ");
    num = int.Parse(Console.ReadLine());

    for(i=1; i <= num; i++)
    {
        fatorial *= i;
    }
    Console.WriteLine("O fatorial de "+num+" é "+fatorial);
    Console.WriteLine("Calcular outro número (s/n)?");
    resposta = char.Parse(Console.ReadLine());
} while(resposta !='n');

第一次还好,再试一次就报错了

您没有在循环中重新初始化 factorial,因此在第二次(及后续)迭代中,您将拖走之前的计算。当您将 num 重新初始化为用户输入时重新初始化 factorial = 1,您应该没问题。

您需要在每个循环中重置factorial,否则它将保留上一个循环的值。

添加:

do
    {    
        factorial = 1; // re-initialize every loop
        Console.WriteLine("Informe um numero e veja o seu fatorial: ");
        num = int.Parse(Console.ReadLine());