递归写法总结

本文总结了递归编程的重要性和挑战,强调了明确递归目标、掌握递归逻辑和设定终止条件的重要性。通过一个对称树判别的例子,阐述了如何在递归过程中处理边界情况,并给出递归函数的思考方式,包括对称树的递归判断逻辑。
摘要由CSDN通过智能技术生成

递归写法总结

问题描述

递归是算法中的一种很重要思想。好的递归程序逻辑清楚,代码简洁,有时候时间上也非常高效;此外链表、二叉树等结构用递归算法一般都有鲜明优势。
往往递归问题口头说起来感觉十分清晰顺畅;而用代码实现起来确总感觉层峦叠嶂,不知从何下手,思路也越来越混乱不堪。

几点总结

最近在解决一些算法相关的小问题时候,经常需要用到递归,有几点感悟。

  1. 递归的目标,时刻从要得到的结果\目标考虑。
  2. 当然,递归要把握住从本层到下一层的具体逻辑/代数关系。例如需要各层数值累加;本层的条件不足以判断需求的结果,还需要下一层的条件等。这一般是认为相对简单的。
  3. 代码中要有明确的在每一层传递变量返回结果;以使递归持续下去,同时能获取下一级的结果。
  4. 递归的终止条件。可能是数值超过给定的范围,可能是已经能判断出需要的结果。
  5. 递归到边界时候的写法统一到递归中。到达容器边界,也会导致递归终止,这就给程序终止带来一定的复杂性。把问题想明白了就很简单,因为在边界上除了有强行终止,还有递归条件目标的终止。
    1> 递归的每一层都可能是容器边界,从着手写代码就应该考虑。
    2> 列举所有可能的容器边界,判断个边界对应的返回结果。
    3> 除容器边界外的情况,都应当是可向下一步递归的。在这个情况下写出符合目标条件的递归关系式。

一个例子

对称树的判别

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值