编写程序,定义一个求Fibonacci(斐波那契)数列的函数fib(n),并编写测试代码,输出前20项(每项宽度5个字符位置,右对齐),每行输出10个。运行效果参见图8-5。请分别使用递归和非递归方式实现。
时间: 2024-02-13 12:00:35 浏览: 79
c#斐波那契数列(Fibonacci)(递归,非递归)实现代码
5星 · 资源好评率100%
使用递归实现斐波那契数列的代码如下:
```python
def fib_recursive(n):
if n <= 1:
return n
else:
return fib_recursive(n-1) + fib_recursive(n-2)
```
使用非递归实现斐波那契数列的代码如下:
```python
def fib_non_recursive(n):
if n <= 1:
return n
else:
fib_list = [0, 1]
for i in range(2, n+1):
fib_list.append(fib_list[i-1] + fib_list[i-2])
return fib_list[n]
```
测试代码如下:
```python
# 输出前20项斐波那契数列
for i in range(20):
if i % 10 == 0:
print()
print("{:>5}".format(fib_recursive(i)), end='')
print("\n\n")
# 输出前20项斐波那契数列
for i in range(20):
if i % 10 == 0:
print()
print("{:>5}".format(fib_non_recursive(i)), end='')
print("\n\n")
```
运行效果如下:
```
0 1 1 2 3 5 8 13 21 34
55 89 144 233 377 610 987 1597 2584 4181
0 1 1 2 3 5 8 13 21 34
55 89 144 233 377 610 987 1597 2584 4181
```
可以看到,递归和非递归方式都能正确地输出前20项斐波那契数列。
阅读全文