C语言阶乘递归调用,这个怎么解释?
#include<stdio.h>
int fun(int);
int main()
{
int num,sum;
printf("请输入你要进行的阶乘数:\n");
scanf("%d",&num);
getchar();
sum=fun(num);
printf("结果为:sum=%d\n",sum);
}
int fun(n)
{
if(n==1)
{
return 1;
}else
{
return n*fun(n-1);//1
// return n*fun(--n); 2
}
}
运行1 时能得到正确结果,运行2 时结果总是少第一个num, n*fun(--n)是怎么执行的,为什么和n*fun(n-1)结果不一样呢?