在Python中实现递归

时间:2016-12-17 20:57:57

标签: python python-2.7

我目前正在使用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]

我需要了解思考过程。

2 个答案:

答案 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)]替换该行。星星将展开第一个列表并单独添加元素。