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