【SEU程序设计课笔记】 23 - 2020/12/31 - Write C++ programs - 递归

本文探讨了如何实现高效的递归,指出高效的递归应避免问题重叠,如快速排序的优秀实例。同时强调在递归调用中必须设定停止条件,可以通过限制递归深度或判断终止节点来实现。并以斐波那契数列的低效递归为例,说明了重复计算的问题。
摘要由CSDN通过智能技术生成

递归

效率问题

怎样的递归才是高效的?

高效的递归式是递归的每一部分没有重合,而是将大问题拆成若干个小问题。

一个极其高效的例子:快速排序。详见我的博客 【C++ 程序】 快速排序

一个极其低效的例子:斐波那契数列的计算用递归就是一件很不合适的事,原来算过的又重新算一遍,是一个极其糟糕的递归,重合面积 100%。

调用问题

在调用过程中,一定要有停止条件,可以是显式的或者隐式的。一般有以下这两种显式办法:

  • 设置递归深度(即递归到一定次数即截至,例如 DFS )
  • 判断叶节点(到了某些特定元素或元素满足特定条件就不再递归下去而是有明确的返回值,例如快速排序)

ALL RIGHTS RESERVED © 2020 Teddy van Jerry
欢迎转载,转载请注明出处。


See also

Teddy van Jerry 的导航页

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值