我無法繪製遞歸樹如下排列碼:可視化的for循環在Python
def permut(array):
if len(array) == 1:
return [array]
res = []
for permutation in permut(array[1:]):
print permutation, array
for i in range(len(array)):
res.append(permutation[:i] + array[0:1] + permutation[i:])
return res
比方說,我的數組是「米克」然後我得到了以下的打印輸出的排列陣列:
k和CK
CK和ICK
KC和ICK
ICK和Mick
我理解它,直到 'K' 和 'CK'(當陣列= 'CK' LEN(arraw [1:])== 1),但我們怎樣才能永遠得到 'ICK' 爲遞歸中的數組? 你能想象這個嗎?非常感謝任何提示!
可以簡單地實現。如果'array'開始作爲''mick'',那麼第一個遞歸調用被傳遞'數組[1:]',它是''ick''。如果您嘗試在紙面上手動操作算法,可能會有所幫助。另一個可能幫助的事情是將一個額外的'depth'參數傳遞給'permut',也就是用'def permut(array,depth = 0):'來定義它,並且用'遞歸地調用它來置換permut(array [1 :],depth + 1):'並將您的打印語句更改爲'打印深度,排列,數組'。 –
順便說一句,'array'不是一個很棒的變量名,特別是對於一個字符串。人們會認爲它應該是一個'list',或者一個[Numpy](http://docs.scipy.org/doc/numpy-1.10.0/reference)數組,或者一個標準庫['array']( https://docs.python.org/2/library/array.html)。 –
你用'array [1:]'和''mick'[1:] =='ick''調用'permut()',你的輸出是正確的。 – Zety