python 递归

作者: python测试开发 | 来源:发表于2019-02-01 22:31 被阅读11次

介绍

重复任务常用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)

参考资料

实例:阶乘

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

相关文章

网友评论

    本文标题:python 递归

    本文链接:https://www.haomeiwen.com/subject/vvljsqtx.html