【发布时间】:2021-12-31 06:23:57
【问题描述】:
我正在尝试学习递归,并在两个列表中分离奇数和偶数值并将它们合并到另一个列表,如下所示:
代码:
def separateNumbers(L):
evenList = []
oddList = []
main = []
if len(L)==0:
return L
if L[0] % 2 == 0:
evenList.append(L[0])
separateNumbers(L[1:])
if L[0] % 2 == 1:
oddList.append(L[0])
separateNumbers(L[1:])
main.append(evenList)
main.append(oddList)
return main
inputList = [1,2,3,4,5,6,7,8,9,10]
L = separateNumbers(inputList)
print(L)
输入:
L = [1,2,3,4,5,6]
输出:
[[1,3,5], [2,4,6]]
每次调用递归函数时,偶数数组和奇数数组都会重置,我该如何解决这个问题?
用内部函数试过:
def separateNumbers(L):
evenList = []
oddList = []
main = []
def inner(L):
if len(L)==0:
return L
if L[0] % 2 == 0:
evenList.append(L[0])
inner(L[1:])
if L[0] % 2 == 1:
oddList.append(L[0])
inner(L[1:])
main.append(evenList)
main.append(oddList)
return main
a = inner(L)
return a
输出:
[[2, 4, 6, 8, 10], [1, 3, 5, 7, 9], [2, 4, 6, 8, 10], [1, 3, 5, 7, 9], [2, 4, 6, 8, 10], [1, 3, 5, 7, 9], [2, 4, 6, 8,
10], [1, 3, 5, 7, 9], [2, 4, 6, 8, 10], [1, 3, 5, 7, 9], [2, 4, 6, 8, 10], [1, 3, 5, 7, 9], [2, 4, 6, 8, 10], [1, 3, 5, 7, 9], [2, 4, 6, 8, 10], [1, 3, 5, 7, 9], [2, 4, 6, 8, 10], [1, 3, 5, 7, 9], [2, 4, 6, 8, 10], [1, 3, 5, 7, 9]]
【问题讨论】:
-
做一个嵌套函数来做实际的递归
-
我尝试了内部函数但没有得到答案,我正在显示原始帖子中的更改。关于递归的一些我不明白的事情
-
Inner 永远不应该调用
main.append(oddList)。如果您想了解您的代码,请手动跟踪它 -
我通常会调试和跟踪我的代码,但即使使用递归也无助于理解