这是使用python 3.5
的斐波那契代码z = 0
x = 0
y = 1
while z != 317811:
x = x + y
z = x
print (z)
y = x + y
z = y
print (z)
我想知道为什么在将条件设置为
时打印到无穷大但是当它低于这个数字时会起作用,如
或大于此的数字
我尝试了一种不同的方法(z <= 317811),但它打印到514229。
感谢您的时间。
KD
答案 0 :(得分:1)
您只是测试备用Fibonnaci数字作为停止条件:317811错过了。
一种解决方法是测试 x
和y
。
答案 1 :(得分:1)
这只是逻辑问题 你打印两个
z!= 317811 对于这种情况 “Z” 在第一个z赋值中更新两次,即 z = x 但是“z”再次在第二次分配 z = y 时更新,然后“z”不满足条件( z!= 317811 )并且不等于317811但现在 514229
注意:它将始终适用于在第二步打印的数字,因为Z的这个值将在循环中的条件下进行比较
答案 2 :(得分:0)
您将z值增加两次循环,但只检查一次。
实际发生的事情是z随着斐波那契系列的增加而增加。 z的最后一个值是:
但是你每两次任务只检查一次停止条件。在这种情况下,您正在检查196418!= 317811和514229!= 317811,因此永远不会匹配它。
一种可能的解决方法是在首次打印后测试z!= 317811。即使在这种情况下,我也希望测试&#34;&lt;&#34;而不是&#34;!=&#34;