我使用的是代码
fibList=[1]
def fib(n1, n2):
n3 = n1+n2
n1=n2
n2=n3
num1=1
num2=2
while(num2<4000000):
fib(num1,num2)
if (num2%2==0):
fibList.append(num2)
total = sum(fibList)
print total在联机编译程序repl.it中。它来来去去,没有给出解决方案,所以我在fib函数的定义中,在n3=行的正下方键入了print n3行。它给了3,一次又一次,我还没来得及停止程序,它就崩溃了。显然,在某个地方存在某种无限循环(至少,在我的脑海中很明显;我想它不可能是无限循环,但我非常确定它是无限循环)。问题是在哪里。我真的不明白为什么会有一个无限循环。
顺便说一句,这不是一个家庭作业问题,而是我为了好玩而做的一个问题。假设fib函数计算斐波那契数,第二部分分离小于400万的偶数,最后计算总和。
我想知道的是无限循环会在哪里出现,以及我可以做些什么来修复它。谢谢!
发布于 2016-08-18 05:14:03
n1、n2和n3是局部变量,在外部作用域中与num1和num2没有任何共同之处,尽管它们是初始值。您必须对该值执行return操作,并再次将这些结果赋给num1和num2。
def fib(n1, n2):
n3 = n1+n2
n1=n2
n2=n3
return n1, n2
num1=1
num2=2
fibList=[1]
while num2<4000000:
num1, num2 = fib(num1,num2)
if num2%2==0:
fibList.append(num2)
total = sum(fibList)
print totalhttps://stackoverflow.com/questions/39006344
复制相似问题