无法理解为什么代码在数字大于输入后不停止

问题描述 投票:0回答:1

我正在尝试使用 Programiz 学习代码,挑战是找到并打印斐波那契数列中小于您输入的数字的数字。这是代码,到目前为止它适用于输入 5 和 6,这两个输入在序列中分别在 3 和 5 处停止,但任何高于该数字的数字都会继续。我不明白为什么。我尝试手动跟踪循环。我输入7,它应该循环6次(范围是1,7,但在7处停止)。

> loop 1=print t1(1), result=t1(1)+t2(1), t1=t2(1), t2=result(2) 
> loop 2=print t1(1), result=t1(1)+t2(2), t1=t2(2), t2=result(3)
> loop 3=print t1(2), result=t1(2)+t2(3), t1=t2(3), t2=result(5)
> loop 4=print t1(3), result=t1(3)+t2(5), t1=t2(5), t2=result(8)
> loop 5=print t1(5), result=t1(5)+t2(8), t1=t2(8), t2=result(13)

它不应该停在这里吗,因为 t1=8 大于 n(7),关闭 while 循环

n = int(input())
t1 = 1
t2 = 1
result = 0
while t1<n:
    for num in range (1,n):
        print(t1)
        result=t1+t2
        t1=t2
        t2=result

抱歉问了这么长的问题,我只是想我应该解释一下我的故障排除思路,如果有人可以提供帮助,我们将不胜感激。

python fibonacci
1个回答
0
投票

您的内部循环除了从

1
迭代到
n-1
之外没有任何约束。

如果您输入

7
,该内部循环将运行六次,即使这意味着
t1
最终大于
n

考虑一下我们是否输入

12
:

>>> t1 = 1
>>> t2 = 1
>>> result = 0
>>> while t1<n:
...     for num in range (1,n):
...         print(t1)
...         result=t1+t2
...         t1=t2
...         t2=result
... 
1
1
2
3
5
8
13
21
34
55
89
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.