我写了一个小函数,用C语言计算一个数的阶乘,代码如下:
int factNnumbers(int n)
{
if(n == 1)
return 1;
else
return (n*factNnumbers(--n));
}
我将上述函数称为:
factNnumbers(takeInputN());
输入函数(takeInputN
)的定义如下:
int takeInputN()
{
int n;
printf("\n\nHow many numbers ?? \n ");
scanf("%d", &n);
return n;
}
如果我按照下面所示更改我的阶乘代码中的一行,那么我的程序就可以完美地工作。否则,使用上述代码,它将打印输入数字
-1
的阶乘(例如,如果输入数字为5
,它将打印4
的阶乘)。为什么会发生这种情况?int factNnumbers(int n)
{
if(n != 1)
return (n * factNnumbers(--n));
}