def?gs(l):
????res=[]
????if?len(l)==0:
????????return?[[]]
????small=gs(l[:-1])#這里每次調(diào)用gs之后會(huì)一直減小到空集!那么
????#這代碼永遠(yuǎn)都return空集??!因?yàn)閟mall調(diào)用到最后總會(huì)滿足if?len(l)==0:
????extra=l[-1:]
????new=[]
????for?sml?in?small:
????????new.append(sml+extra)
????????print?new
????return?small+new我還畫了個(gè)草圖,沒(méi)搞明白。。。
1 回答

ruibin
TA貢獻(xiàn)358條經(jīng)驗(yàn) 獲得超213個(gè)贊
其實(shí)這里就是一個(gè)閉包問(wèn)題。最主要的是你要明白
?for?sml?in?small:
????????new.append(sml+extra)
????????print?new
????return?small+new
這行代碼執(zhí)行了多少次! (每調(diào)用一次gs, 他就執(zhí)行一次,只是在最后執(zhí)行罷了!切記,每次extra的值都不一樣哦)
這個(gè)就是閉包和遞歸的結(jié)合,重要的是理解程序的執(zhí)行。
添加回答
舉報(bào)
0/150
提交
取消