我试图创建一个代码,给定数字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)
答案 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)
,之后您可以返回结果。