C++递归本质(个人理解:栈和链表思想结合)

84 篇文章 3 订阅
8 篇文章 0 订阅

先放一个B站视频链接看过之后相信很多人会有跟我一样的感觉:递归解释

所谓递归,网上有很多人进行解释,大部分都是这样写的:自己调用自身,本质就是将规模较大的问题化成结构相同但规模较小的问题。即大事化小,小事化了。为了避免死循环,要设一个结束条件,不能无限划分下去,最后再一层一层返回所有未操作步骤,简单来说就是将大的分解成小的,再由小的还原成大的,很多人说递归的本质是栈,毕竟栈是先入后出的原则,大的先放进去,小的后放进去(一层一层分解),最后是小的先弹出(还原)但其实我觉得不完全准确,递归的本质更像是栈跟链表的结合,这个灵感来源于B站上一个视频:
如图:在这里插入图片描述
题目就是求一个二叉树的最大深度,假如我们把每一个节点要执行的所有步骤分成1,2,3,4,那么每个节点的步骤分为四个小方格组合成一个链表的结点,如此当结点判断不是终止结点后,继续调用自身函数指向下一个结点如此到最后终止NULL,然后返回上一步执行该结点剩余所有步骤,在一层一层return上一个结点继续执行剩余步骤再return上一个结点,如此往复,这样看的话是不是有点像双向链表,但是和链表又不完全一样,是栈的思想和链表的思想结合。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值