Python递归函数与斐波那契数列

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python递归函数与斐波那契数列相关的知识,希望对你有一定的参考价值。

定义:在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。

阶乘实例

1 n = int(input(">>:"))
2 
3 
4 def f(n):
5     s = 1
6     for i in range(2, (n + 1)):
7         s *= i
8     return s
9 print(f(n))

递归

1 def factorial_new(n):
2  
3     if n==1:
4         return 1
5     return n*factorial_new(n-1)
6  
7 print(factorial_new(3))

递归函数的特点:

  1 调用自身函数

  2 有一个明显的结束条件,问题规模相比上次递归有所减少

优点: 定义简单,逻辑清晰,所有的递归函数都可以写成循环的方式,但是循环的逻辑不如递归清晰。

但是,递归的效率不高,递归层次过多会导致栈溢出,大概1000层。

斐波那契数列

 1 def fibNum(n):          #斐波那契数列
 2     a, b = 0, 1
 3     for i in range(n):
 4         b, a = a+b, b
 5     return b
 6 n = int(input(">>:"))
 7 if n == 1:
 8     print(0)
 9 elif n == 2:
10     print(1)
11 else:
12     print(fibNum(n-2))

用递归写

 1 def fibo(n):
 2     before = 0
 3     after = 1
 4     if n == 0 or n == 1:
 5         return n
 6 
 7     if n <= 3:
 8         return 1
 9     return fibo(n-1)+fibo(n-2)
10 
11 print(fibo(3))

递归效率低,当数字过大时,会很慢。

 

以上是关于Python递归函数与斐波那契数列的主要内容,如果未能解决你的问题,请参考以下文章

递归与斐波那契数列

编写一递归函数求斐波那契数列的前40项

python递归求斐波那契数列前10项

利用递归函数求斐波那契值python版

对斐波那契数列的理解

python 递归函数实现斐波那契数列