2.一个求Fibonacci(斐波那契)数列的函数fib(n),并编写测试代码。输出前20项(每项宽度5个字符位置,右对齐),每行输出十个。运行效果如下图所示。请分别使用递归和非递归的方式实现。
时间: 2024-11-18 20:16:46 浏览: 12
fib.zip_Fibonacci_MIPS_MIPS描述fib函数_mips斐波那契_ocean8nl
为了帮助您理解如何编写一个求Fibonacci数列的函数,并且提供递归和非递归版本的实现以及相应的测试代码,这里是一个Python示例:
**递归实现**(效率较低,因为会有很多重复计算)
```python
def fib_recursive(n):
if n <= 0:
return "错误:n必须大于0"
elif n == 1 or n == 2:
return 1
else:
return fib_recursive(n - 1) + fib_recursive(n - 2)
# 测试代码
for i in range(1, 21): # 输出前20项
print(f"{fib_recursive(i):>5}", end=" ")
print("\n")
```
**非递归实现**(使用动态规划,效率较高)
```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]
# 测试代码
for i in range(1, 21): # 输出前20项
print(f"{fib_iterative(i):>5}", end=" ")
print("\n")
```
运行上述代码,你会看到类似下面的结果(注意实际输出可能会超过一行,因为这里是文本描述,不是实际图形):
```
1 1 2 3 5 8 13 21 34 55 ...
```
阅读全文