for循环在递归函数中停止迭代
For loop stops iterating in recursive function
我正在尝试使用 Python 2.7.
解决 Hackerrank 上的 dependency hell 问题
我已经形成了一个字典,其中列出了所有的依赖项。字典是这样的:
d = {1: [1, 8], 2: [0], 3: [1, 7], 4: [1, 7], 5: [1, 2], 6: [1, 2], 7: [0], 8: [2, 3, 4]}
每个列表中的第一个数字就是该列表中元素的数量。接下来的数字是依赖项的索引。每个数字是一个软件的索引(即软件#1)。
我试图创建一个递归函数,给定一个索引,将列出所有需要安装的软件,以便安装预期的软件。我现在不担心订单。这是函数:
def listSW(p,d,L):
L.append(p)
if d[p][0] > 0:
for i in xrange(1,d[p][0]+1):
return listSW(d[p][i],d,L)
else:
return L
其中 L
是一个列表(最初为空),我在其中转储所有需要安装的索引,p
是我们打算安装的软件。
问题是在 for
循环中只考虑了 i = 1
。因此,如果我 运行 p = 8
的函数,我得到:
[8, 3, 7]
当我打算得到:
[8, 3, 7, 4, 7]
我做错了什么?
def listSW(p,d,L):
L.append(p)
if d[p][0] > 0:
for i in xrange(1,d[p][0]+1):
listSW(d[p][i],d,L)
return L
但我不想混合 return 和更新列表,所以我会这样做 :
def buildList(p,d,L=[]):
def patchList(p,d,L):
L.append(p)
for i in d[p][1:]:
patchList(i,d,L)
patchList(p,d,L)
return L
我正在尝试使用 Python 2.7.
解决 Hackerrank 上的 dependency hell 问题我已经形成了一个字典,其中列出了所有的依赖项。字典是这样的:
d = {1: [1, 8], 2: [0], 3: [1, 7], 4: [1, 7], 5: [1, 2], 6: [1, 2], 7: [0], 8: [2, 3, 4]}
每个列表中的第一个数字就是该列表中元素的数量。接下来的数字是依赖项的索引。每个数字是一个软件的索引(即软件#1)。
我试图创建一个递归函数,给定一个索引,将列出所有需要安装的软件,以便安装预期的软件。我现在不担心订单。这是函数:
def listSW(p,d,L):
L.append(p)
if d[p][0] > 0:
for i in xrange(1,d[p][0]+1):
return listSW(d[p][i],d,L)
else:
return L
其中 L
是一个列表(最初为空),我在其中转储所有需要安装的索引,p
是我们打算安装的软件。
问题是在 for
循环中只考虑了 i = 1
。因此,如果我 运行 p = 8
的函数,我得到:
[8, 3, 7]
当我打算得到:
[8, 3, 7, 4, 7]
我做错了什么?
def listSW(p,d,L):
L.append(p)
if d[p][0] > 0:
for i in xrange(1,d[p][0]+1):
listSW(d[p][i],d,L)
return L
但我不想混合 return 和更新列表,所以我会这样做 :
def buildList(p,d,L=[]):
def patchList(p,d,L):
L.append(p)
for i in d[p][1:]:
patchList(i,d,L)
patchList(p,d,L)
return L