Python 如何使斐波那契数列上升到n,而不是完全结束
给定正整数Python 如何使斐波那契数列上升到n,而不是完全结束,python,algorithm,Python,Algorithm,给定正整数n创建一个由小于或等于n的斐波那契序列部分组成的列表。例如,如果n是6,则列表将是[0,1,1,2,3,5],如果n是1,则列表将是[0,1,1] 目前,这就是我所拥有的,如果n等于数字6或20,那么斐波那契序列就会经过n例如[0,1,1,2,3,5,8]对于n=6或[0,1,1,2,3,5,8,13,21]对于n=20 这就是我现在拥有的 fib = [0,1] result = 0 while result < n: result = fib[-1] + fib[
n
创建一个由小于或等于n的斐波那契序列部分组成的列表。例如,如果n是6
,则列表将是[0,1,1,2,3,5]
,如果n是1
,则列表将是[0,1,1]
目前,这就是我所拥有的,如果n
等于数字6或20,那么斐波那契序列就会经过n
例如[0,1,1,2,3,5,8]
对于n=6
或[0,1,1,2,3,5,8,13,21]
对于n=20
这就是我现在拥有的
fib = [0,1]
result = 0
while result < n:
result = fib[-1] + fib[-2]
fib.append(result)
fib=[0,1]
结果=0
当结果
编辑:如果您的意思是希望列表中的最后一个术语小于n
,则以下内容有效,否则saurabh的答案是正确的
如果您在while中循环当前迭代,并且结果超出限制,会发生什么情况?你还是要加上它
下面是一个穷人的做法:
fib = [0,1]
result = 0
n = 6
while result < n:
result = fib[-1] + fib[-2]
if (result < n):
fib.append(result)
print(fib)
fib=[0,1]
结果=0
n=6
当结果
对于6:[0,1,1,2,3,5]
对于20:[0,1,1,2,3,5,8,13]
fib=[0,1]
fib = [0,1]
result = fib[-1] + fib[-2]
while result < n:
fib.append(result)
result = fib[-1] + fib[-2]
结果=fib[-1]+fib[-2]
当结果
这应该会起作用。当您的条件是针对最后一个数字设置时,您应该针对列表中的元素总数设置它
fib = [0,1]
result = 0
count = 20
while len(fib) < count :
result = fib[-1] + fib[-2]
fib.append(result)
print(fib)
print(len(fib))
您只需将其打印出来: fib[-2]
这将打印出bug没有使用的编号。别忘了你也可以弹出 代码如下:
n = 20
fib = [0, 1]
while fib[-1] <= n:
fib.append(fib[-2] + fib[-1])
fib.pop()
手动浏览你的代码,你就会明白为什么。。。
def fib(n):
if n < 0: # if you care about negative numbers.
return []
fib = [0] # handles n == 0
result = 1 # next result for n > 0
while result <= n: # handles "...less than or equal to n"
fib.append(result)
result = fib[-1] + fib[-2]
return fib
for i in (-1,0,1,6,20):
print(i,fib(i))
-1 []
0 [0]
1 [0, 1, 1]
6 [0, 1, 1, 2, 3, 5]
20 [0, 1, 1, 2, 3, 5, 8, 13]
n = 20
fib = [0, 1]
while fib[-1] <= n:
fib.append(fib[-2] + fib[-1])
fib.pop()
[0, 1, 1, 2, 3, 5, 8, 13]