首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >python中的无限循环-为什么?

python中的无限循环-为什么?
EN

Stack Overflow用户
提问于 2016-08-18 05:10:58
回答 1查看 65关注 0票数 0

我使用的是代码

代码语言:javascript
运行
复制
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万的偶数,最后计算总和。

我想知道的是无限循环会在哪里出现,以及我可以做些什么来修复它。谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-18 05:14:03

n1n2n3是局部变量,在外部作用域中与num1num2没有任何共同之处,尽管它们是初始值。您必须对该值执行return操作,并再次将这些结果赋给num1num2

代码语言:javascript
运行
复制
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 total
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39006344

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档