#include<stdio.h>
int main(){
int fac(int n);
int n,y;
printf("please input an integer number:");
scanf("%d",&n);
if(n<0)
printf("data error"); // n 不能小于 0
else{
y = fac(n);
printf("%d!=%d\n",n,y);
}
return 0;
}
int fac(int n){
int f;
if(n==0||n==1)//出口
f = 1;
else
f = fac(n-1) * n;
return f;
}
在我看来,所有的递归算法,就两个关键点:一是普遍算法,二是出口设置。
在上面的例子中,“普遍算法”指的就是乘一个比自身小1的数字;“出口设置”就是n=1或n=0时结果直接等于1。
然后再把“出口”中得到的结果不断回代,直到回到主函数中最开始调用这个函数的地方,得到最终结果!