[問題] 排列組合的疑問
def combos(n, m = 1):
if n < m:
return []
res = [[n]]
for i in range(m, n):
l = [i]
for j in combos(n - i, i):
res += [l + j]
return res
print (combos(5))
我寫題目遇到一題 題目是這樣
假如輸入3 要列出所有相加等於3的情況
[3],[2,1],[1,1,1]
然後爬文看到一個算式比較簡單的寫法
但是還是不太懂
第七行為什麼可以讓迴圈在def執行?
還有他的每一層迭代我也不是很了解
目前只理解到 第一次執行會留下自己的值
接下來把自己的值-1 (ex:3-1=2) 繼續分解2
假如輸入是5呢
[5],[1,4],[1,1,3],[1,1,1,2],[1,1,1,1,1]
接下來的
[1,2,2],[2,3]是如何進行迭代的 我就不太清楚了
希望板上神人們可以指導一下
--
生如夏花之絢爛,
死如秋葉之靜美。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 163.22.18.54
※ 文章網址: https://www.ptt.cc/bbs/Python/M.1496823702.A.5DC.html
→
06/07 16:35, , 1F
06/07 16:35, 1F
→
06/07 22:13, , 2F
06/07 22:13, 2F
→
06/07 22:28, , 3F
06/07 22:28, 3F
→
06/07 22:29, , 4F
06/07 22:29, 4F
→
06/07 22:30, , 5F
06/07 22:30, 5F
→
06/07 22:31, , 6F
06/07 22:31, 6F
推
06/07 22:42, , 7F
06/07 22:42, 7F
→
06/07 22:51, , 8F
06/07 22:51, 8F
討論串 (同標題文章)