2017-04-02 64 views
0

我已經嘗試實現一個遞歸算法:「X」是一個全局變量輸出遞歸執行

def build_paths(m,n): 
    Result = [] 
    Move = X[(m,n)][1] 
    if Move[0] == "None": 
     return(Move[0]) 
    else: 
     if Move[0]=="UP": 
      m -= 1 
     elif Move[0]=="Left": 
      n -= 1 
     else: 
      m -= 1 
      n -= 1 
     Result = [build_paths(m,n),Move[0]] 
    return(Result) 

這產生

[[[[[[['None', 'LEFT'], 'DIAG'], 'DIAG'], 'DIAG'], 'UP'], 'DIAG'], 'DIAG'] 

這在本質上是我想要的,但我真正想要的是

['None','LEFT','DIAG','DIAG','UP','DIAG','DIAG'] 

然後,我改變了我的遞歸函數的第二個最後一行

Result = [build_paths(m,n)].extend(Move[0]) 

我認爲在邏輯上是正確的,也就是我一直在延長我的名單,但最終,它只輸出

None 

我無法弄清楚爲什麼會發生?

回答

0

build_paths()返回一個列表,並extend返回None(它會修改其參數),所以你會想:

Result = build_paths(m,n) 
Result.append(Move[0])