问题描述
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
,您应该没问题。