簡體   English   中英

Python中的無限循環-為什么?

[英]Infinite loop in python - why?

我正在使用代碼

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函數應該用於計算斐波那契數,第二部分將小於四百萬的偶數隔離,然后最后計算總和。

我想知道的是無限循環的來龍去脈以及如何解決這個問題。 謝謝!

n1n2n3是局部變量,盡管具有初始值,但在外部范圍中與num1num2沒有任何共同之處。 您必須return值並將這些結果再次分配給num1num2

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM