2017-04-18 23 views
0

我試圖讓字鏈,但不能避開遞歸搜索。 我想返回reuired的單詞列表以獲得目標單詞 get_words_quicker返回可以通過更改一個字母而生成的單詞列表。自上而下的遞歸算法的問題

def dig(InWord, OutWord, Depth): 
    if Depth == 0: 
     return False 
    else: 
     d = Depth - 1; 
    wordC = 0; 
    wordS = []; 
    for q in get_words_quicker(InWord): 
     wordC+=1 
     if(OutWord == q): 
      return q 
     wordS.append(q) 

    for i in range(0,wordC): 
     return dig(wordS[i],OutWord,d) 

任何幫助/問題將不勝感激。

+0

這是什麼問題? – wwii

+0

'對於範圍內的我(......):return ...'基本上被打破了 - 循環永遠不會迭代一次以上 - 並且如果迭代次數爲零,那麼您就會脫離底部而不返回任何東西。 – jasonharper

回答

0

分析

沒有地方在你的代碼,你形成一個列表返回。你做一個列表的地方是附加到wordS,但你永遠不會返回這個列表,並且你的遞歸調用只能從該列表中傳遞一個元素(一個單詞)。

正如jasonharper已經指出的那樣,你最終的循環能夠迭代一次,並返回無論遞歸給它,或者它可以脫落結束並返回(而不是「無」)。

你必須在代碼中另外兩個回報:一個返回,和其他將返回q,但只有當q的值相同訓練的必要性

由於沒有代碼,您使用的結果,或以任何方式改變返回值,爲您的代碼的返回值的唯一可能性是,並訓練的必要性

REPAIR

我怕我不知道如何解決這個例程方式,因爲你還沒有真正描述你打算如何驗證碼進行高層次的任務你描述。縮寫的變量名稱隱藏了它們的用途。 wordC是一個計數器,它的唯一功能是保存從返回的列表長度get_words_quicker - 這可以更容易地完成。

如果您可以清理代碼,改進數據流和/或文檔,使其僅顯示一個或兩個邏輯中斷,也許我們可以修復其餘問題。現在,我猶豫不決 - 你會有我的解決方案,而不是你的