小问题不明白,求助大神!
#include<stdio.h>long recursion(int n);
void main()
{
int n;
long result;
scanf("%d",&n);
result=recursion(n);
printf("%ld\n",result);
}
long recursion(int n)
{
long k;
if(n<0)
{
printf("input error!\n");
}
else if(n==0||n==1)
{
k=1;
}
else
{
k=recursion(n-1)*n;
}
return k;
}
为什么要有n==0这个条件?
如果输入0的话,函数返回为1, 0!等于1? 对啊.. 0! = 1.规定的 阶乘的定义:n! = n * (n-1) * (n-2) * ...* 2 * 1
且 1! = 1, 0! =1
这是为了保证 n! = n * (n-1)! 对于n>=1都成立
页:
[1]