【算法】--递归

本文探讨了递归的概念,强调递归是将大问题分解为小问题的策略。内容涵盖递归处理技巧,如忽略技术细节和边界条件的重要性,并介绍了三种解递归的方法:代入法、递归树和主方法。通过实例解析了每种方法的使用和注意事项,帮助读者深入理解递归及其求解策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

​To iterate is human, to recurse, divine.
人理解迭代,神理解递归。

递归的基本思想是把规模大的问题转化为规模小的相似的子问题来解决。在函数实现时,因为解决大问题的方法和解决小问题的方法往往是同一个方法,所以就产生了函数调用它自身的情况。另外这个解决问题的函数必须有明显的结束条件,这样就不会产生无限递归的情况了。

一、递归的处理技巧

  1. 在求解递归方程时,通常会忽略一些技术细节,比如,假定自变量是整数,忽略上下取整符号;
  2. 通常会忽略递归方程的边界条件,对于足够小的n,将T(n)作是一个常数,令T(n)=Θ(1);
  3. 在有些特殊情况下,技术细节非常重要,需要重视上下取整符合和边界条件,期望得到更好的结论。

二、解递归的方法


代入法:

步骤:

  • 猜测解的形式
  • 数学归纳法证明
  • 解出常数c,n0

例子:
T(n) = 4T(n/2) + 100n

  • 认定 T(1) = Θ(1)
  • 猜测解为 O(n^{3})
  • 当 k < n时,假定 T(k) ≤ck3
  • 数学归纳法证明 T(n) ≤cn3


c ≥ 200 c \geq 200

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值