编写程序,定义一个求 Fibonacci(斐波那契)数列的函数fib(n),并编写测试代码出前20项(每项宽度5个字符位置,右对齐),每行输出10个。程序运行效果参见图所示。请分别使用递归和非递归方式实python
时间: 2024-06-13 14:04:21 浏览: 218
以下是递归和非递归方式实现斐波那契数列的代码:
递归实现:
<<引用:>>
def fib(n):
if n <= 1:
return n
else:
return fib(n-1) + fib(n-2)
print("递归实现")
for i in range(20):
print("{:>5}".format(fib(i)), end=" ")
if (i+1) % 10 == 0:
print()
非递归实现:
<<引用:>>
def nofibonacci(num):
print("非递归实现")
a = 0
b = 1
print("{:>5}".format(a), end=" ")
print("{:>5}".format(b), end=" ")
for i in range(2, num):
c = a + b
a = b
b = c
print("{:>5}".format(c), end=" ")
if (i+1) % 10 == 0:
print()
nofibonacci(20)
相关问题
编写程序,定义一个求斐波那契数列的函数fib(n),并编写测试代码,输出前20项,每行输出10个。
好的,以下是 Python 代码实现:
```python
def fib(n):
if n <= 0:
return 0
elif n == 1:
return 1
else:
return fib(n-1) + fib(n-2)
# 输出前20项,每行输出10个
for i in range(20):
print("{:5}".format(fib(i)), end="")
if (i+1) % 10 == 0:
print("\n", end="")
```
输出结果如下:
```
0 1 1 2 3 5 8 13 21 34
55 89 144 233 377 610 987 1597 2584 4181
```
斐波那契数列是指从第三项开始,每一项都是前两项之和,因此可以使用递归方式实现。但是递归方式在计算过程中会有大量的重复计算,因此效率不高,实际应用中一般使用循环方式计算。
python编写程序定义一个求斐波那契数列的函数fib(n),并编写测试代码,输出前20项(每项宽度5个字符位置,右对齐)每行输出10个
好的,以下是代码实现:
```python
def fib(n):
if n <= 1:
return n
else:
return fib(n-1) + fib(n-2)
for i in range(20):
if i % 10 == 0:
print()
print("{:>5}".format(fib(i)), end="")
```
输出结果如下:
```
0 1 1 2 3 5 8 13 21 34
55 89 144 233 377 610 987 1597 2584 4181
```
其中,`fib(n)` 函数用于求解斐波那契数列第 n 项,采用递归实现。`range(20)` 循环遍历前 20 项斐波那契数列,如果是每行的第一个数或第 11 个数,则 `print()` 输出一个空行;否则,使用 `"{:>5}".format(fib(i))` 格式化输出,保证每项宽度为 5 个字符位置,右对齐。最后使用 `end=""` 参数避免换行,保证所有数在同一行输出。
阅读全文