当前位置:优草派 > 问答 > Python问答

使用python求斐波那契数列中第n个数的值示例代码

标签: Python  Python开发  Python  作者: luximeng

回答:

斐波那契数列是指从0、1开始,后面每一项都是前面两项之和的数列。即:0, 1, 1, 2, 3, 5, 8, 13, 21, 34, ……

在Python中,求斐波那契数列中第n个数的值可以使用多种方法,本文将从递归、循环和矩阵三个角度分析,并给出相应示例代码。

1. 递归法

递归是指函数直接或间接地调用自身的方法,求斐波那契数列中第n个数的值可以使用递归的方式实现。具体过程如下:

当n为0时,返回0;

当n为1时,返回1;

当n大于1时,返回第n-1项和第n-2项之和。

以下是使用递归法求斐波那契数列中第n个数的值的Python代码:

```

def Fibonacci(n):

if n == 0:

return 0

elif n == 1:

return 1

else:

return Fibonacci(n-1) + Fibonacci(n-2)

```

这种方法的优点是代码简单易懂,缺点是计算量大,当n较大时,会出现递归深度过深的问题。

2. 循环法

循环法是指使用循环结构实现的方法,求斐波那契数列中第n个数的值也可以使用循环的方式实现。具体过程如下:

初始化a=0,b=1;

当n等于0时,返回a;

当n等于1时,返回b;

循环n-1次,每次将a和b的值交替赋给c和d,然后计算a和b的和,赋值给b,最后将d的值赋给a。

以下是使用循环法求斐波那契数列中第n个数的值的Python代码:

```

def Fibonacci(n):

a, b = 0, 1

if n == 0:

return a

elif n == 1:

return b

else:

for i in range(n-1):

c, d = a, b

a, b = d, c+d

return b

```

这种方法的优点是计算量小,运行速度快,缺点是代码稍微有些复杂。

3. 矩阵法

矩阵法是指使用矩阵乘法实现的方法,求斐波那契数列中第n个数的值也可以使用矩阵的方式实现。具体过程如下:

初始化矩阵M1=[1,1;1,0]和矩阵M2=[f1,f0],其中f1和f0分别表示斐波那契数列中第2个和第1个数的值;

当n等于1时,返回f1;

当n等于2时,返回f0;

循环n-2次,每次将M1和M2相乘,得到新的矩阵M2,然后将M2的第1个元素赋值给f1,第2个元素赋值给f0。

以下是使用矩阵法求斐波那契数列中第n个数的值的Python代码:

```

import numpy as np

def Fibonacci(n):

M1 = np.array([[1, 1], [1, 0]])

M2 = np.array([[1], [0]])

f1, f0 = 1, 0

if n == 1:

return f1

elif n == 2:

return f0

else:

for i in range(n-2):

M2 = np.dot(M1, M2)

f1, f0 = M2[0][0], M2[1][0]

return f1

```

这种方法的优点是计算量小,运行速度快,代码简单易懂。

综上所述,求斐波那契数列中第n个数的值可以使用递归、循环和矩阵三种方式实现。递归法代码简单易懂,但计算量大;循环法计算量小,但代码稍微有些复杂;矩阵法计算量小,代码简单易懂,且运行速度快。因此,在实际使用中,应根据具体情况选择合适的方法。

TOP 10
  • 周排行
  • 月排行