python函数递归求和详解_Python3 递归函数

Python3 递归函数

阅读 (105) |

发布于 2020-05-19 14:19:26

如果一个函数在内部调用了自身,这个函数就被称为递归函数。

先看一个例子,典型的高斯求和问题,1+2+3+4+…+99+100,使用循环:def sum_number(n):

summ = 0

for i in range(1, n+1):

summ += i

return summ

sum_number(100)

使用递归函数:def sum_number(n):

if n <= 0:

return 0

return n+sum_number(n-1)

sum_number(100)

递归函数逐行分析:

第2-3行:当n小于等于0时,直接return和值为0。

第4行:当n大于0时,结果是n+sum_number(n-1)。这里的sum_number(n-1)是sum_number函数的调用,参数值变成了n-1,要得到sum_number(n)的值就必须等待sum_number(n-1)的值被计算出来,同样sum_number(n-1)的值必须等待sum_number(n-2)的值…… 直到sum_number(0),给出结果0(见第2-3行分析)。然后程序一路返回,直到回到最初的sum_number(n),得到最终结果。

递归核心思想:每一次递归,整体问题都要比原来减小,并且递归到一定层次时,要能直接给出结果!

递归程序都遵循相同的基本步骤:

1.初始化算法。递归程序通常需要一个开始时使用的种子值(seed value)。可以向函数传递参数,或者提供一个入口函数,这个函数是非递归的,但可以为递归计算设置种子值。

2.检查要处理的当前值是否已经与基线条件相匹配(base case)。如果匹配,则进行处理并返回值。

3.使用更小的或更简单的子问题(或多个子问题)来重新定义答案。

4.对子问题运行算法。

5.将结果合并入答案的表达式。

6.返回结果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值