#include<stdio.h>
int main()
{
int fac(int n); //声明将要调用int fac(int n) 的函数
int n,y;
printf("please input an integer number:\n");
scanf("%d",&n);
if(n<0)
printf("date error!\n");
else
{
y=fac(n); //调用定义的fac函数
printf("%d!=%d\n",n,y);
}
return 0;
}
int fac(int n) // 这句里面括号内的(int n)是为形参
{
int f;
if(n==0||n==1)
f=1;
else f=fac(n-1)*n; //而这里是后面括号内的n-1则为实参
return(f); //最后f的返回值也就是主函数中y的值,即5!=120
}
------------------------------------------------------------------
如果n=5,也就是求5的乘阶,5!
那么在定义的函数int fac(int n)里面:
第一次的递归的实参为:(n-1) 即5-1=4
第二次的递归的实参为:(n-1-1)即5-2=3
....................依次向后为:(n-1-1-1)即5-3=2
(n-1-1-1-1)即5-4=1
---------------------------------------------------------------------每重复调用自己一次就会减1,直到n=1时便终止递归调用。