九日集训(第九天)简单递归

78 阅读1分钟

九日集训(第九天)简单递归

零、昨日复盘

九日集训(第八天)二级指针

   今天是九日集训的第九天,我们来学习简单递归的概念,视频版请 戳我

一、概念定义

1、递归的含义

递归就是函数自己调自己。

2、递归调用阶乘

我们知道,阶乘即

img

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

img

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

img

这就是阶乘的递推式。 然后,我们根据上面提到的三个点,进行如下套用:

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、为什么叫递归

​ 我们按照递推式,将递归调用展开如下:

img

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

img

三、课后习题

​ 九日集训最后一天! 坚持!加油!你可以的!

阶乘后的零

将数字变成 0 的操作次数

完全二叉树的节点个数

开幕式焰火

整数替换

二叉搜索树的范围和

二叉树的深度

二叉树的最大深度

翻转二叉树

所有路径

所有路径 II