Python 如何将斐波那契序列保存到列表中?
但我想得到这样的列表:Python 如何将斐波那契序列保存到列表中?,python,python-3.x,list,recursion,Python,Python 3.x,List,Recursion,但我想得到这样的列表:[0,1,1,2,3,…] 如何得到它 def fibonacci(n): lst = [] if n == 0: return 0 elif n == 1: return 1 else : f = fibonacci(n - 1) + fibonacci(n - 2) return f h = fibonacci(4) 或 如果希望fibonacci
[0,1,1,2,3,…]
如何得到它
def fibonacci(n):
lst = []
if n == 0:
return 0
elif n == 1:
return 1
else :
f = fibonacci(n - 1) + fibonacci(n - 2)
return f
h = fibonacci(4)
或
如果希望fibonacci(0)
返回[]
def fibonacci(n):
lst = [0, 1]
if n == 0:
return [0]
for i in range(2, n+1):
lst.append(lst[i - 1] + lst[i - 2])
return lst
print(fibonacci(0)) # ->[0]
print(fibonacci(1)) # ->[0,1]
print(fibonacci(2)) # ->[0,1,1]
print(fibonacci(3)) # ->[0,1,1,2]
print(fibonacci(4)) # ->[0,1,1,2,3]
print(fibonacci(10)) # ->[0,1,1,2,3,5,8,13,21,34,55]
这是一个效率极低的解决方案,但根据您当前的逻辑,您只需将
map
与list
一起使用即可:
def fibonacci(n):
lst = [0, 1]
if n == 0:
return []
if n == 1:
return [0]
for i in range(2, n):
lst.append(lst[i - 1] + lst[i - 2])
return lst
print(fibonacci(0)) # ->[]
print(fibonacci(1)) # ->[0]
print(fibonacci(2)) # ->[0,1]
print(fibonacci(3)) # ->[0,1,1]
print(fibonacci(4)) # ->[0,1,1,2]
print(fibonacci(10)) # ->[0,1,1,2,3,5,8,13,21,34]
也有可能(不适用于
n@Kasramvd,我知道为什么这被标记为重复。但是,同样,OP是否想要最好的解决方案,或者是否想要学习如何返回应用于某个范围的函数的结果,也不清楚。在后一种情况下,map
是解决方案。仍然可能是一个dup,但是另一个。@jpp我想你可以找到答案在上面提到的DUP中的所有问题中,如果问题是关于返回应用于某个范围的函数的结果,OP应该在标题或问题正文中提到。尽管如此,我添加了三个副本,显示了这个问题以前被问了多少。@Kasramvd,OP可能不知道映射
或范围
,所以可能没有必要的词汇表。但我确实喜欢dup目标,它们应该保留:)。
h = list(map(fibonacci, range(10)))
print(h)
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
def fib(n, lst=None):
if lst is None:
lst = [0, 1]
while len(lst) < n:
lst.append(lst[-2] + lst[-1])
return lst