#include <stdio.h>
long f(int n){
if(n==1){
return 1;
}else{
return n * f(n-1);
}
}
int main()
{
int m = 5;
long f(int n);
printf("5!= %d\n", f(m));
return 0;
}
学习到:
- 递归调用
一个函数 在他函数体内 调用自身 成为递归调用 - 递归函数体内有两种情况
- 到达最底部(最后一步),然后返回
- 还没到达最后一步,就需要一直分离,继续往下走
eg:
//这是递归函数定义,但是最好不要有两个出口
int f(int n){
if(n==1){
return 1;
}else{
retrun n*f(n-1);
}
}
//改进
int f(int n){
int c;
if(n==1){
c = 1;
//return 1;
}else{
c = n*f(n-1);
//retrun n*f(n-1);
}
return c;
}
3. 递归函数思路
* 形式:式子可以分离成f(n) = n*f(n-1)但不限于n*函数,
* 内容:
1是到了递归尽头,需要有确切返回值给上层函数计算,计算后,才能保证整个递归函数有结果
2没到尽头则继续递归
总结:无论那种情况都要对上层函数负责,保证其返回值,不然递归失去了连续性
标签:return,函数,递归,递归函数,int,else,方法
From: https://www.cnblogs.com/97rong/p/16841598.html