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

问题描述

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,否则它会保存上一个循环的值。

添加:

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

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