python-3.x 我怎样才能限制我的斐波那契数列到一定数量的条款?[关闭]

oxosxuxt  于 2023-07-01  发布在  Python
关注(0)|答案(2)|浏览(134)

**已关闭。**此问题不符合Stack Overflow guidelines。目前不接受答复。

这个问题似乎不是关于在help center定义的范围内编程。
14小时前关闭
Improve this question
我今天开始学习编程。我开始使用Python,因为我知道它是最简单的。作为一个挑战,我想看看我能不能写一段代码来创建斐波那契数列。(1,1,2,3,5,8,13……)
这是我能找到的最短的代码。(如果你知道如何用更少的代码来做,请回复。

当我运行程序时,我的笔记本电脑死机了,因为它从来没有停止过序列。我想在某种程度上阻止它。就像我说做前100个,它会做序列的前100个项。

e5njpo68

e5njpo681#

代码的问题在于while循环的条件69<420始终为真,因此创建了一个无限循环。
您可以按如下方式更新代码:

terms = 10

start = 0
second = 1

print(start, second, end=' ')

for x in range(terms-2):
    print(start+second, end=' ')
    start, second = second, start+second

在循环中,我取了terms-2,因为我们已经取了两个开始项。
输出为:

0 1 1 2 3 5 8 13 21 34
nbysray5

nbysray52#

将第8行改为:

while n < 100:

它会让你的pogram在 n 达到100时停止。
若要在指定的项数后停止,请使用单独的变量来跟踪项数。下面是如何用最少的代码更改来实现它:

remaining = 10
n = 1
m = 1
while True:
  if remaining <= 0:
    break
  remaining -= 1
  print(n)
  if remaining <= 0:
    break
  remaining -= 1
  print(m)
  n = n + m
  m = n + m

有很多其他的方法来解决它,其中一些是更短和优雅,看到其他的答案。最终你会学会用不同的方式解决问题,有些更短,有些更快,有些更容易理解,有些更兼容。
例如,上面的代码是做同样的事情两次,它可以简化:

remaining = 10
n = m = 1
while True:
  if remaining <= 0:
    break
  remaining -= 1
  print(n)
  (n, m) = (m, n + m)

相关问题