我正在做一个阶乘 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());
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());