给定数字n的python中的斐波那契序列

时间:2014-12-31 16:36:20

标签: python

我试图创建一个代码,给定数字n,它将打印F [n](我为了计算斐波纳契数而创建的函数)。但显然有一些错误因为无论输入,结果总是1.Heres是代码:

def fib(n):
    a=1
    b=1
    x=1
    for i in range(n):
        a=b
        b=x+b
        x=a
        return a
n=input()
print fib(n)

1 个答案:

答案 0 :(得分:3)

Python是一种空白敏感语言。 Python中代码块的范围由缩进级别决定:

def fib(n):
    a=1
    b=1
    x=1
    for i in range(n):
        a=b
        b=x+b
        x=a
        return a # <--- the first time you run through the loop you return

return a位于for循环中,因为它与for循环的其余部分缩进到同一级别。因此,第一次运行循环时,您会到达return语句,该语句在该时间点离开函数。这很可能不是你想要的。您需要在return循环之外取for,如下所示:

def fib(n):
    a=1
    b=1
    x=1
    for i in range(n):
        a=b
        b=x+b
        x=a
    return a # <--- now no longer in the loop.

现在循环将遍历所有range(n),之后您可以返回结果。