定一个求斐波那契数列的函数fib(n),并编写测试代码,输出前20项(每项宽度5个字符位置,右对齐),每行输出10个。请分别使用递归和非递归方式实现
时间: 2024-10-16 11:04:04 浏览: 45
fib.zip_Fibonacci_MIPS_MIPS描述fib函数_mips斐波那契_ocean8nl
在Python中,我们可以分别使用递归和非递归的方式编写一个求斐波那契数列的函数,并通过`'{:<5}'.format()`来实现每个数右对齐显示。
**递归实现**:
```python
def fib_recursive(n):
if n <= 0:
return 0
elif n == 1 or n == 2:
return 1
else:
return fib_recursive(n - 1) + fib_recursive(n - 2)
def print_fibonacci_recursive(n, width=5, start=0):
for i in range(start, n+1):
print('{:<5}'.format(fib_recursive(i)), end='')
if (i+1) % 10 == 0:
print() # 每10个数换行
print_fibonacci_recursive(20)
```
**非递归实现**:
```python
def fib_iterative(n):
a, b = 0, 1
for _ in range(n):
a, b = b, a + b
return a
def print_fibonacci_iterative(n, width=5, start=0):
for i in range(start, n+1):
print('{:<5}'.format(fib_iterative(i)), end='')
if (i+1) % 10 == 0:
print()
print_fibonacci_iterative(20)
```
这两个函数会分别打印出斐波那契数列的前20项,每行10个数,数值右对齐显示,宽度为5个字符。
阅读全文