假设我输入n = 5,如何获得前5个数字而不是10?
#fibonacci sequence
n=int(input('Enter number of numbers: '))
a=1
b=0
for i in range(1,n+1):
a=a+b
b=a+b
print(a)
print(b)
在a
循环中添加b
和for
的方式是错误的。如果您两次使用print
,则每个循环将打印两次。
n=int(input('Enter number of numbers: '))
a=1
b=0
for i in range(1,n+1):
a, b = a + b, a
print(a)
n=int(input('Enter number of numbers: '))
a=1
b=0
for i in range(1,n+1):
a, b = a + b, a
print(a)
您的方法存在的问题是您每次都执行步骤2。例如,在一次迭代中,您从a=5, b=3
转到a=13, b=8
。因此有2 * 5输出。
尝试一下:
n = int(input('Enter number of numbers: '))
def fib(n):
curr, next_ = 1, 1
for _ in range(n):
yield curr
curr, next_ = next_, curr + next_
print(list(fib(n)))