Python 入门简明教程
1. 1. 与 Python 的第一次亲密接触-写给初学者 2. 2. Python 语法关键字 3. 3. Python 的注释和语法 4. 4. Python 基本数据类型 5. 5. Python 输入输出 6. 6. Python 运算符 7. 7. Python 变量 8. 8. Python 命名空间和变量生存范围 9. 9. Python 逻辑判断 10. 10. Python For 循环语法 11. 11. Python While 循环语法 12. 12. Python 循环语法中 break 与 continue的使用 13. 14. Python 三目运算符 14. 15. Python 循环语法中 pass 语句的使用 15. 16. Python 循环语法示例 16. 17. Python 函数 17. 18. Python main 函数 18. 19. Python print 函数 19. 20. Python print format 输出格式化 20. 21. Python print 输出到文件 21. 22. Python 输入 22. 23. Python import 导入模块 23. 25. Python 中递归的使用 24. 26. Python 匿名函数 25. 27. Python lambda 26. 28. Python PIP 包管理机制 27. 29. Python 命令行参数 28. 30. Python Numbers 包 29. 31. Python 随机数 30. 32. Python String 转 int 31. 34. Python 自定义异常 Exception 32. 35. Python 继承 33. 36. Python 父类 34. 38. Python 操作符重载 35. 39. Python __str__ and __repr__

25. Python 中递归的使用

同学们,今天好!在本教程中,我们将学习Python递归,并将其用于fibonacci序列生成。在上一个教程中,我们讨论了Python函数和参数.

Python递归

使用递归实现的函数可以使用循环实现。但是你必须了解Python递归的基本知识。基本上,当一个事物被自己定义时,就会发生递归。您可能听说过脚本语言的名字菲律宾比索. 的缩写菲律宾比索超文本预处理器. 这是递归的一个例子。在python中,递归发生在函数本身定义的时候。下面给出了Python递归函数的结构


def recursive_function(arguments):
        #check for the terminating condition
        if breaking_condition == True :
                #Calculate result
                return result

        #perform some operation with the arguments
        
        #call the function itself to perform further operation
        return recursive_function(arguments_for_further_operation)

Python Fibonacci级数

斐波纳契级数基本上是一个序列。在那个序列中,每个数是该序列前两个数的和。序列的最初两个数字是0和1或1和1。我们将把0和1作为示例中的前两个数字。所以,这个系列的前几个数字是

我们看到了,

  • 第一个斐波纳契数=0(根据假设)
  • 第二个斐波纳契数=1(根据假设)
  • 第三个斐波纳契数=第一个+第二个=0+1=1
  • 第四个斐波纳契数=第二个+第三个=1+1=2个
  • 第5个斐波纳契数=3+4=1+2=3
  • 第6个斐波纳契数=4+5=2+3=5
  • 所以,第n个Fibonacci数=(n-1)第个Fibonacci+(n-2)个Fibonacci数

因此,实现Fibonacci函数的代码如下所示。


def Fibonacci( pos ):
        #check for the terminating condition
        if pos <= 1 :
                #Return the value for position 1, here it is 0
                return 0
        if pos == 2:
                #return the value for position 2, here it is 1
                return 1

        #perform some operation with the arguments
        #Calculate the (n-1)th number by calling the function itself
        n_1 = Fibonacci( pos-1 )
        #calculation  the (n-2)th number by calling the function itself again
        n_2 = Fibonacci( pos-2 )
        #calculate the fibo number
        n = n_1 + n_2
        #return the fibo number
        return n

#Here we asking the function to calculate 5th Fibonacci
nth_fibo = Fibonacci( 5 ) 

print (nth_fibo)

上面的代码将使用递归技术计算Fibonacci数。下图将帮助您更有效地理解概念。在这幅图中,蓝色方框是满足终止条件的函数调用。

Python递归的优点

使用递归实现某些东西需要较少的工作量。使用递归编写的代码将比由循环实现的代码要小。同样,递归也更容易理解。

Python递归的缺点

递归需要更多的函数调用。每个函数调用都将一些状态变量存储到程序堆栈中。如果你的代码需要太多的函数调用,它将消耗太多内存。因此,如果代码的效率不高,可能会导致内存溢出。

同样,调用一个函数需要一些时间,如果函数的任务完成,它会调用父函数,这也会导致一些时间从以前的状态重新执行父函数。因此,递归函数要花费更多的时间来执行它的任务。

此外,调试递归函数在大多数情况下都比较困难。

因此_ , _如果_可以_不_使用_递归_实现_函数_ , _则_应该_使用_递归_实现_函数_ 。_与使用循环的实现相比,递归函数的效率不高,但更易于实现。

所以,这就是Python递归的全部内容。如果您对递归有任何疑问,请在下面发表评论。