如何通过迭代找到fibonancci系列?

时间:2016-06-02 07:11:36

标签: python python-2.7 iteration

我写了一个函数来找到第n个fibonancci。这里的代码 -

def fib(n):
    res1 = 0
    res2 = 0
    for i in str(n):
        res1 = n - 1
        for j in str(n):
            res2 = n - 2
    return res1 + res2

通过上面的代码,如果我输入n = 4而不是打印5.这是正确的。但如果我打印n = 5而不是打印7,那就不正确了。如何解决这里的错误。有任何逻辑错误吗?任何人都可以详细解释。

不要使用递归方法我希望它与迭代有关。

1 个答案:

答案 0 :(得分:4)

def fib(n):
    a,b = 1,1
    for i in range(n-1):
        a,b = b,a+b
    return a

print(fib(4))

嗯,有一个TechnoBeans页面显示5 Ways of Fibonacci in Python

您的代码:

def fib(n):
    res1 = 0
    res2 = 0
    for i in str(n):     # i gets the string value 9 here
        res1 = n-1       # res1 is 9-1 which is 8
        for j in str(n): # j gets the string value 9 here
            res2= n -2   # res2 is 9-2 which is 7 
    return res1 +res2    # returns 8 + 7 which is 15

print(fib(9))            # output 15

你的代码中有很多不必要的东西,你首先需要对Python有一些基本的了解。我个人发现以下网站对学习Python很有帮助: Learn Python The Hard Way

要理解为什么您的代码不能做Fibonacci,您需要了解Fibonacci的工作原理。你可以在这里阅读更多关于斐波那契的信息 Math Is Fun 网站上的Fibonacci Sequence