我正在為斐波那契數(shù)列編寫程序。x=0y=1print (x)print (y)z = Nonefor z in range(1,100,x+y): z=x+y print(z) x = y y = z問題是輸出顯示的數(shù)字超過 100。這是輸出示例011235813213455891442333776109871597258441816765為什么有大于 100 的值?注意:這個程序是用python 3.6編寫的
2 回答

炎炎設(shè)計
TA貢獻1808條經(jīng)驗 獲得超4個贊
問題是你運行循環(huán) 100 次而不是檢查結(jié)果是否小于 100。如果你使用while循環(huán)而不是for循環(huán),代碼可能更容易閱讀:
x=0
y=1
while True:
fib = x + y
if fib < 100:
print (fib)
x = y
y = fib
else:
break

當(dāng)年話下
TA貢獻1890條經(jīng)驗 獲得超9個贊
如果你想讓它停在給定的數(shù)字你需要一個 if 語句,否則你將運行斐波那契數(shù)列 100 次
x=0
for number in range(1,100):
x = number + x
if x <= 100:
print(x)
else:
break
此外,您不必使用 step,因為它會為每個循環(huán)自動遞增 1
以及你的問題的答案why are they more than hundred:因為你運行了 100 次斐波那契數(shù)列,當(dāng)它達到 100 時你不會停止它。
添加回答
舉報
0/150
提交
取消