软件测试Python专家之路python数据分析人工智能机器学习程序员

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)

参考资料

实例:阶乘

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
上一篇下一篇

猜你喜欢

热点阅读