我嘗試實作置換演算法。它運作良好。
但是我關于這個演算法中遞回的問題
置換函式:
def permutations(word):
在回傳陳述句后它如何以及為什么繼續作業?
if len(word) == 1:
return [word]
如果最后一次燙發 == ['3'] 它如何從 ['3'] 回傳到 ['23']?
perms = permutations(word[1:])
char = word[0]
result = []
for perm in perms:
for i in range(len(perm) 1):
result.append(perm[:i] char perm[i:])
return result
uj5u.com熱心網友回復:
我明白了。基于堆疊的遞回。這就是為什么它在 return 陳述句之后繼續執行。
uj5u.com熱心網友回復:
- 我正在測驗你的解決方案,我不明白你為什么說它不會隨著回傳而停止,因為它應該在基本情況下阻止我
- 代碼那部分的問題是當你使用
perm[i:]而不是perm[i-1:因為你還需要第一個元素(這就是為什么你只得到 3 而不是 23 和 32)
所以它應該看起來像這樣:
result.append(perm[:i] char perm[i-1:])
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/328821.html
