python斐波那契数列递归输出前20项 每项宽度5个字符 每行输出10个
时间: 2023-06-07 17:08:44 浏览: 93
这是一个技术问题,可以回答。以下是代码:
```python
def fib(n):
if n <= 1:
return n
else:
return fib(n-1) + fib(n-2)
for i in range(20):
print('{0:5}'.format(fib(i)), end='')
if (i+1)%10 == 0:
print()
```
相关问题
使用python递归与非递归编写程序,定义一个求 Fibonacci(斐波那契)数列的函数fib(n),并编写测试代码,输出 前20项(每项宽度5个字符位置,右对齐),每行输出10个。
在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个数字的方式右对齐显示。递归方法虽然简洁,但在处理大数值时可能会有性能问题,因为会有很多重复计算。而非递归版本则更高效,因为它避免了重复计算。
使用python非递归编写程序,定义一个求 Fibonacci(斐波那契)数列的函数fib(n),并编写测试代码,输出 前20项(每项宽度5个字符位置,右对齐),每行输出10个。
在Python中,我们可以使用循环而非递归来编写Fibonacci数列的函数。以下是一个简单的例子:
```python
def fib(n):
if n <= 0:
return "请输入正整数"
elif n == 1:
return [0]
elif n == 2:
return [0, 1]
else:
fib_sequence = [0, 1]
for i in range(2, n):
fib_sequence.append(fib_sequence[-1] + fib_sequence[-2])
return fib_sequence[:n]
# 测试代码
for index, number in enumerate(fib(20), start=1): # 使用enumerate遍历序列,并自动加1作为索引
print(f"{number:5}", end='') # 格式化输出,右对齐,每项宽度5个字符
if index % 10 == 0 or index == 20: # 每10个数字换行
print()
阅读全文