已知 f(n) f(1)=1; n=1 f(2)=1; n=2 f(n)=f(n-1)+f(n-2) n>=3 求 f(30)用递推和递归分别编码实现?
时间: 2024-10-18 18:14:38 浏览: 28
这是一个经典的斐波那契数列的问题,我们可以用递推和递归两种方法来求解。
**递推法**(也叫迭代法):
```python
def fibonacci_recurrence(n):
if n <= 0:
return 0
elif n == 1 or n == 2:
return 1
else:
a, b = 1, 1
for _ in range(3, n + 1):
a, b = b, a + b
return b
# 计算 f(30)
fib_30_iterative = fibonacci_recurrence(30)
```
**递归法**(虽然直观,但效率较低,因为存在大量的重复计算):
```python
def fibonacci_recursive(n):
if n <= 0:
return 0
elif n == 1:
return 1
else:
return fibonacci_recursive(n - 1) + fibonacci_recursive(n - 2)
# 计算 f(30)(注意递归可能会导致栈溢出)
fib_30_recursive = fibonacci_recursive(30)
```
阅读全文