def gs(l):
res=[]
if len(l)==0:
return [[]]
small=gs(l[:-1])#这里每次调用gs之后会一直减小到空集!那么
#这代码永远都return空集啊!因为small调用到最后总会满足if len(l)==0:
extra=l[-1:]
new=[]
for sml in small:
new.append(sml+extra)
print new
return small+new我还画了个草图,没搞明白。。。
1 回答
ruibin
TA贡献358条经验 获得超213个赞
其实这里就是一个闭包问题。最主要的是你要明白
for sml in small:
new.append(sml+extra)
print new
return small+new
这行代码执行了多少次! (每调用一次gs, 他就执行一次,只是在最后执行罢了!切记,每次extra的值都不一样哦)
这个就是闭包和递归的结合,重要的是理解程序的执行。
添加回答
举报
0/150
提交
取消