这是《python算法教程》的第3篇读书笔记。由于之前看书的效率太低了,所以拖了一个多星期才写第三篇读书笔记。这次主要简单总结一下递归(recursion)。
递归简介
递归是编程中一种常见的算法,他的主要特征是函数运行过程中会调用函数自己,呈现出同一个函数层层套嵌的现象。
之所以会使用递归,是因为需要解决的问题可通过分解为与原问题相同但规模较小子问题来解决。同时规模较小的子问题可通过较为简单的代码来解决。
上述解决问题的思路则正可通过递归来实现。但要注意的是:
1.递归算法的开销较大。若开销较小的算法能替代递归,则建议使用开销较小的算法。
2.为避免递归算法中,函数被无限次调用,陷入死循环,应在函数中设置结束条件。
代码示例
以下是使用递归来对1至100之间的自然数进行求和的代码。
#递归实现求和
#start为起始数字,end为结束数字,step为步长
def recursionSum(start,end,step):
s=0
#结束条件
if start>end:
return 0
#递归操作
s=start+recursionSum(start+step,end,step)
return s
s=recursionSum(1,100,1)
print(s)
以下是通过循环的求和代码
#通过循环结构实现求和
def cycleSum(start,end,step):
s=0
for i in range(start,end+1,step):
s=s+i
return s
s=cycleSum(1,100,1)
print(s)