7-1 Linux C 递归函数之递归调用
求n的阶乘:
#include <stdio.h>
int func(int n){
int r;
if(n<0)
printf("data error\n");
else if (n==0 || n==1)
r=1;
else r = n * func(n-1);
return r;
}
int main(){
int n;
printf("please input n:\n");
scanf("%d",&n);
int result=func(n);
printf("result=%d\n",result);
return 0;
}
运行结果:
linux@ubuntu:~/workspace2/les5$ ./a.out
please input n:
2
result=2
linux@ubuntu:~/workspace2/les5$ ./a.out
please input n:
3
result=6
linux@ubuntu:~/workspace2/les5$ ./a.out
please input n:
4
result=24
linux@ubuntu:~/workspace2/les5$ ./a.out
please input n:
5
result=120
7-2 Linux C 递归函数之递归原理
递归的本质是把问题规模为n的问题转化为问题规模为n-1的问题;
递推的本质是把低规模的问题转化为问题规模为n的问题;
求阶乘: