python 递归
2019-02-01 本文已影响11人
python测试开发
介绍
重复任务常用for和while循环,它们可对对列表,集合等执行迭代。另外可以通过调用函数自身,即递归。
什么是递归?
递归函数通常有两个组件:
- 何时应该停止递归
- 调用函数自身
让我们看一个小例子来演示这两个组件:
# Assume that remaining is a positive integer
def hi_recursive(remaining):
# The base case
if remaining == 0:
return
print('hi')
# Call to function, with a reduced remaining count
hi_recursive(remaining - 1)
图片.png
为什么不使用Loop?
一些问题通常递归更容易解决。递归的常见用例是树遍历:
在使用递归时,遍历树的节点和叶子通常更容易思考。尽管循环和递归都可以遍历树,但它们具有不同的目的 - 循环意味着重复任务,而递归意味着将大任务分解为更小的任务。
实例:列表求和
Python包含列表的sum函数。默认的Python实现CPython在C中使用了一个不确定的for循环来创建这些函数(这里的源代码对于那些感兴趣的人)。让我们看看如何使用递归:
def sum_recursive(nums):
if len(nums) == 0:
return 0
last_num = nums.pop()
return last_num + sum_recursive(nums)
参考资料
- 讨论qq群144081101 567351477
- 本文最新版本地址
- 本文涉及的python测试开发库 谢谢点赞!
- 本文相关海量书籍下载
- python工具书籍下载-持续更新
- python GUI工具书籍下载-持续更新
实例:阶乘
def factorial(n):
if n == 0 or n == 1:
return 1
return n * factorial(n - 1)
斐波纳契数列
def fibonacci_iterative(n):
if n <= 1:
return n
a = 0
b = 1
for i in range(n):
temp = a
a = b
b = b + temp
return a