递归的三定律

递归的三定律

例:

def listsum(numList):
if len(numList) == 1:
return numList[0]
else:
return numList[0] + listsum(numList[1:])
print(listsum([1,3,5,7,9]))


所有递归算法必须服从三个重要的定律:
1. 递归算法必须具有基本情况。
2. 递归算法必须改变其状态并向基本情况靠近。
3. 递归算法必须以递归方式调用自身。

首先,基本情况是算法停止递归的条件。基本情况通常是足够小以直接求解的问题。在 listsum 算法中,基本情况是长度为 1 的列表。

为了遵守第二定律,我们必须将算法向基本情况的状态改变。状态的改变意味着该算法正在
使用的一些数据被修改。通常,表示问题的数据在某种程度上变小。在 listsum 算法中,我
们的主要数据结构是一个列表,因此我们必须将我们的状态转换工作集中在列表上。因为基
本情况是长度 1 的列表,所以朝向基本情况的自然进展是缩短列表。

最后的法则是算法必须调用自身。这是递归的定义。递归对于许多新手程序员来说是一个混
乱的概念。作为一个新手程序员,你已经知道函数是有益的,因为你可以将一个大问题分解
成较小的问题。较小的问题可以通过编写一个函数来解决。我们用一个函数解决问题,但该
函数通过调用自己解决问题!该逻辑不是循环;递归的逻辑是通过将问题分解成更小和更容易
的问题来解决的优雅表达。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值