【问题标题】:Problem of "for" loop in creating fibonacci series创建斐波那契数列时的“for”循环问题
【发布时间】:2018-09-03 14:59:29
【问题描述】:

我正在为斐波那契数列制作程序。

x=0
y=1
print (x)
print (y)
z = None
for z in range(1,100,x+y):
    z=x+y
    print(z)
    x = y
    y = z

问题是输出显示的数字超过 100。 这是输出的示例

0
1
1
2
3
5
8
13
21
34
55
89
144
233
377
610
987
1597
2584
4181
6765

为什么会有大于 100 的值?

注意:这个程序是用python 3.6编写的

【问题讨论】:

  • 不确定这个问题,但这里有一些观察:range(1,100,x+y)range(1,100) 相同,因为默认 step 值为 1... 这意味着循环将迭代 99次,你在循环之前有 2 个打印 stmts .. 所以总共有 101 行输出..
  • step 参数在整个 for 循环中不会改变,所以它总是一步一步。

标签: python fibonacci


【解决方案1】:

问题是您运行循环 100 次而不是检查结果是否小于 100。如果您使用 while 循环而不是 for 循环,代码可能更易于阅读:

x=0
y=1
while True:
    fib = x + y
    if fib < 100:
        print (fib)
        x = y
        y = fib
    else:
        break

【讨论】:

    【解决方案2】:

    如果你想让它停在给定的数字,你需要一个 if 语句,如果不是,它会运行斐波那契数列 100 次

    x=0
    for number in range(1,100):
        x = number + x
        if x <= 100:
            print(x)
        else:
            break
    

    您也不必使用 step,因为它会为每个循环自动递增 1

    你的 Q why are they more than hundred 的答案是:因为你运行斐波那契数列 100 次,当它达到 100 次时你不会停止它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-09
      • 2020-11-01
      • 2022-12-06
      • 2015-04-30
      • 1970-01-01
      • 2013-10-04
      相关资源
      最近更新 更多