我目前正在使用Python进行递归,但即使我的过程是正确的,我也没有得到我想要的输出格式。
def fibonacci(n):
if n <= 2:
return 1
else:
return fibonacci(n-1) + fibonacci(n-2)
def fibseries(N):
if N <= 1:
return []
return [fibseries(N-1),fibonacci(N-1)]
a = fibseries(5)
print a
这给了我输出:
[[[[[0], 1], 1], 2], 3]
但我想得到:
[0, 1, 1, 2, 3]
我需要了解思考过程。
答案 0 :(得分:1)
问题在于fibseries
会返回一个列表并在fibseries
内执行:
return [fibseries(N-1),fibonacci(N-1)]
你应该连接fibonacci
输出:
return fibseries(N-1) + [fibonacci(N-1)]
答案 1 :(得分:0)
问题在于return [fibseries(N-1),fibonacci(N-1)]
行。每次调用fibseries时,它都会返回一个列表,因此该行创建一个包含两个元素的新列表,第一个元素本身就是一个列表。要让它做你想做的事,用return [*fibseries(N-1),fibonacci(N-1)]
替换该行。星星将展开第一个列表并单独添加元素。