使用python递归与非递归编写程序,定义一个求 Fibonacci(斐波那契)数列的函数fib(n),并编写测试代码,输出 前20项(每项宽度5个字符位置,右对齐),每行输出10个。
时间: 2024-10-11 22:15:18 浏览: 97
使用python求斐波那契数列中第n个数的值示例代码
5星 · 资源好评率100%
在Python中,递归和非递归都可以用来编写求Fibonacci数列的函数。这里分别给出递归和非递归版本的实现以及相应的测试代码。
**递归版:**
```python
def fib_recursive(n):
if n <= 0:
return 0
elif n == 1:
return 1
else:
return fib_recursive(n - 1) + fib_recursive(n - 2)
# 测试代码
for i in range(1, 21):
print(f"{fib_recursive(i):>5}", end=" ")
print()
```
**非递归版(动态规划):**
```python
def fib_iterative(n):
fib_sequence = [0, 1] + [0] * (n - 1)
for i in range(2, n + 1):
fib_sequence[i] = fib_sequence[i - 1] + fib_sequence[i - 2]
return fib_sequence[n]
# 测试代码
fib_numbers = fib_iterative(20)
for num in fib_numbers[:20]:
print(f"{num:5}", end=" ")
print()
```
这两个函数都会计算前20项Fibonacci数列,并按每行输出10个数字的方式右对齐显示。递归方法虽然简洁,但在处理大数值时可能会有性能问题,因为会有很多重复计算。而非递归版本则更高效,因为它避免了重复计算。
阅读全文