首页 > 解决方案 > 如何在第 n 个斐波那契数之前打印所有斐波那契数?

问题描述

我想将所有斐波那契数打印到索引为 n 的数字,但我的代码只打印第 n 个斐波那契数。请告诉我我做错了什么以及应该如何做?

n = int(input('Enter a number: '))
def fibonacci(n): 
    if n < 0: 
        print("Error(enter a positive integer)") 
    elif n == 1: 
        return 0
    elif n == 2: 
        return 1
    else: 
        for i in range(n):
            return fibonacci(n-1) + fibonacci(n-2)

print(fibonacci(n)) 

标签: pythonpython-3.xfibonacci

解决方案


        for i in range(n):
            return fibonacci(n-1) + fibonacci(n-2)

这个 for 循环是没有意义的,因为你return是第一次迭代。您应该在这里完全摆脱 for 循环。

这也不是您要重复的部分。相反,您想重复该print()语句:

for i in range(n):
    print(fibonacci(i)) # You want the i-th fibonacci number

这将为您提供所需的结果,但这是一种非常低效的方法。对于较大的 值n,您将计算第 i 个斐波那契数的指数次数。


推荐阅读