九日集训(第九天)简单递归
零、昨日复盘
今天是九日集训的第九天,我们来学习简单递归的概念,视频版请 戳我。
一、概念定义
1、递归的含义
递归就是函数自己调自己。
2、递归调用阶乘
我们知道,阶乘即

光知道这个,我们是无法将它进行递归计算的,我们需要将它转换成递推式,如下:

这时候,我们令 f(n) = n!,则有:

这就是阶乘的递推式。 然后,我们根据上面提到的三个点,进行如下套用:
1)实现一个函数
这个函数叫 JieCheng,它的参数是一个整数,返回值也是一个整数,实现如下:
int JieCheng(int n){
}
2)递归出口
当 n 等于 0 或 1 的时候, n 的阶乘应该等于 1,所以递归出口如下:
int JieCheng(int n) {
if(n <= 1) {
return 1;
}
}
3)递推关系
最后,我们将递推关系补充完毕,这样,一个递归函数就实现完毕了。
int JieCheng(int n) {
if(n <= 1){
return 1;
}
return n * JieCheng(n-1);
}
3、为什么叫递归
我们按照递推式,将递归调用展开如下:

这时候我们就会发现,它是两个过程:递推 和 回归(又叫回溯)。如下图所示:

三、课后习题
九日集训最后一天! 坚持!加油!你可以的!