[英]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
函數應該用於計算斐波那契數,第二部分將小於四百萬的偶數隔離,然后最后計算總和。
我想知道的是無限循環的來龍去脈以及如何解決這個問題。 謝謝!
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 total
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.