编写程序,定义一个求Fibonacci(斐波那契)数列的函数fib(n),并编写测试代码,输出前20项(每项宽度5个字符位置,右对齐),每行输出10个。运行效果参见图8-5。请分别使用递归和非递归方式实现。
时间: 2024-10-11 17:03:20 浏览: 26
首先,让我们分别使用递归和非递归的方式编写求斐波那契数列的函数。
**递归方式:**
```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)
def print_fibonacci_recursive(n, width=5, padding=' '):
fib_list = [str(fibonacci_recursive(i)).rjust(width) for i in range(1, n+1)]
for i in range(0, len(fib_list), 10):
print(' '.join(fib_list[i:i+10]))
print_fibonacci_recursive(20)
```
**非递归方式(使用动态规划):**
```python
def fibonacci_iterative(n):
fib_sequence = [0, 1]
a, b = 0, 1
for _ in range(2, n+1):
a, b = b, a + b
fib_sequence.append(b)
return fib_sequence[:n]
def print_fibonacci_iterative(n, width=5, padding=' '):
fib_list = [str(num).rjust(width) for num in fibonacci_iterative(n)]
for i in range(0, len(fib_list), 10):
print(' '.join(fib_list[i:i+10]))
print_fibonacci_iterative(20)
```
这两个函数都会输出斐波那契数列的前20项,每行显示10个数字,每个数字右对齐、长度为5。
阅读全文