创建斐波那契数列的“for”循环问题

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

我正在制作斐波那契系列节目。

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编写的

python fibonacci
2个回答
0
投票

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

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

-1
投票

如果你想让它停在一个给定的数字你需要一个if语句,如果不是你,它将运行fibonacci序列100次

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

此外,您不必使用步骤,因为它为每个循环自动递增1

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

© www.soinside.com 2019 - 2024. All rights reserved.