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
我还画了个草图,没搞明白。。。
asdhjhg
浏览 2898回答 1
1回答
ruibin
其实这里就是一个闭包问题。最主要的是你要明白 for sml in small: new.append(sml+extra) print new return small+new这行代码执行了多少次! (每调用一次gs, 他就执行一次,只是在最后执行罢了!切记,每次extra的值都不一样哦)这个就是闭包和递归的结合,重要的是理解程序的执行。