利用python实现计算斐波那契数列
时间: 2023-11-04 17:08:12 浏览: 94
可以使用递归或循环来计算斐波那契数列。以下是两种不同的实现方式:
1. 递归实现:
```python
def fibonacci(n):
if n <= 1:
return n
else:
return fibonacci(n-1) + fibonacci(n-2)
# 测试
n = 10
for i in range(n):
print(fibonacci(i))
```
2. 循环实现:
```python
def fibonacci(n):
if n <= 1:
return n
else:
a, b = 0, 1
for i in range(n-1):
a, b = b, a + b
return b
# 测试
n = 10
for i in range(n):
print(fibonacci(i))
```
两种实现方式的时间复杂度都是O(n),但是递归实现的空间复杂度为O(n),循环实现的空间复杂度为O(1)。因此,当n比较大时,推荐使用循环实现。
相关问题
python递归计算斐波那契数列
在Python中,递归是一种函数自身调用的方式来解决问题的技术,特别适用于那些可以被分解为规模更小的相同问题的情况。计算斐波那契数列就是一个典型的例子,因为每个数字都是前两个数字之和。以下是递归函数实现斐波那契数列的一个简单版本:
```python
def fibonacci_recursive(n):
"""
使用递归计算斐波那契数列的第n项
:param n: 请求的项数
:return: 斐波那契数列的第n项
"""
if n <= 0:
return "输入的数值必须大于0"
elif n == 1:
return 0
elif n == 2:
return 1
else:
return fibonacci_recursive(n-1) + fibonacci_recursive(n-2)
# 测试
print(fibonacci_recursive(10)) # 输出第10个斐波那契数
```
当调用`fibonacci_recursive(n)`时,它会检查基本情况(n=1 或 n=2),然后对于更大的n,会递归地计算前两项之和。请注意,这种方法虽然直观,但由于每次都会计算相同的子问题,效率并不高,因为它有大量重复计算。对于较大的n值,可以考虑使用动态规划或者记忆化搜索来优化算法。
python编写递归函数、求斐波那契数列第n项_用Python实现求Fibonacci数列的第n项
好的,以下是Python代码实现递归函数求斐波那契数列第n项:
```python
def fibonacci(n):
if n == 0 or n == 1:
return n
else:
return fibonacci(n-1) + fibonacci(n-2)
n = int(input("请输入一个正整数:"))
result = fibonacci(n)
print("斐波那契数列的第{0}项是:{1}".format(n, result))
```
以上代码中,我们定义了一个名为`fibonacci`的递归函数,用来计算斐波那契数列的第n项。当输入的n为0或1时,直接返回n;否则,递归调用`fibonacci(n-1)`和`fibonacci(n-2)`,并将它们的返回值相加,得到斐波那契数列的第n项。
最后,我们通过`input`函数获取用户输入的正整数n,并调用`fibonacci`函数,将计算出的结果输出到屏幕上。
阅读全文