函数递归调用问题中if-else语句求解
以下是我看到的原始例题(黑色字体部分),是关于求正整数阶乘的。我想问一下各位高手在下面程序的的if-else语句中,当我们输入的数是1的时候,那么1!不就是1吗,怎么又多了一个n==0呢,也就是说阶乘值为1的前提不就是就一个n==1吗,n==0时候,阶乘怎么为1呢,请恕我数学知识浅显,我的理解是前半段的if语句应该是if(n==1)
f=1;
else
f=n*fac(n-1);
特请各位高手指点:
#include"stdio.h"
long fac(int n)
{
long f;
if(n==1||n==0)
f=1;
else
f=n*fac(n-1);
return(f);
}
mian()
{
int n;long y;
printf("input a integer number:");
scanf("%d",&n);
y=fac(n);
printf("%d!=%1d\n",n,y);
}