同学们,今天好!在本教程中,我们将学习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递归的全部内容。如果您对递归有任何疑问,请在下面发表评论。