老师问您一个看起来很弱智的问题哈,但我就是不明白

来源:7-1 二叉树天然的递归结构

不考过程序员不改名字

2021-07-14

图片描述
这个是递归终止的条件,如果递归下去某个时刻没有左子树或者没有右子树的时候,那不就在这个递归中节点为空直接返回false了嘛,那么返回false会对它的上层递归有什么影响嘛,不会导致整个程序都退出把

写回答

1回答

liuyubobobo

2021-07-14

返回到上层递归函数,上层递归函数会基于这个返回结果进行相应的逻辑呀。


在 if(contains(node->left, key) || contains(node->right, key)) 中,对调用的函数返回的结果进行了使用,而不是整个程序退出。


递归函数调用和普通函数调用没有区别。只不过调用的函数是自己而已。一个函数执行完毕,返回到上层调用的函数继续执行(而不会整个程序退出。)


我建议你创建一个小的测试用例,用单步跟踪的方式,仔细理解一下这个递归调用的过程到底是怎么执行的。更进一步,我建议你对于经典算法中的递归算法,比如归并排序,或者是链表反转,都重新进行一下理解。如果有需要,可以参考这个课程,其中对递归的微观执行过程有详细解读:https://class.imooc.com/sale/datastructure


继续加油!:)

0
3
不考过程序员不改名字
回复
liuyubobobo
好嘞,谢谢您!
2021-07-14
共3条回复

玩转算法面试-- Leetcode真题分门别类讲解

课程配套大量BAT面试真题,高频算法题解析,强化训练

7408 学习 · 1150 问题

查看课程