2014-11-22 52 views
-2

我正在創建一個小程序,需要我執行以下操作: 從word開始,我需要根據以下規則創建所有可能的單詞:以'help'這個詞開頭, 'help'我成爲樹的根,然後每次我提出第一個類型的點('h'),然後單詞變成我'elp',那麼我總是使用'help'這個詞,但此時我提出第二個字母('e')和然後單詞變成我'hlp',然後我總是採取初始單詞'help'並擡起第三個字母('l'),然後單詞變成我'hep',然後我始終採用初始單詞'help',我提出第四個字母('p'),然後這個單詞變成我'hel'Python - 遞歸和樹的一個詞

後來的後來,在發現('elp''hlp''hep''hel')的話我必須重複,直到你得到的葉子一樣的東西。所有這些單詞都應該包含在列表中(顯然也在樹中)。 顯然有一個遞歸,但我的問題是這個......在遞歸中並不是什麼好事! :(

謝謝你,如果你能幫助我,這是非常重要的

PS:或者說,據我瞭解,我必須創造一切可能的組合,而無需改變字母順序

+0

爲什麼這很重要?這聽起來不像是一個真正的世界問題,它聽起來像是一些CS教授的一些任務,他不想做一個真實世界的問題。我們在這裏不寫代碼,而且你也沒有試圖解決這個問題。 – 2014-11-22 10:44:53

+0

沒有理由也許我解釋不好,我不會說英語,也許谷歌翻譯不明白我的意思: 我必須根據我寫的規則,儘可能地形成單詞,但我不想要所有的代碼,絕對! 我想了解這個推理,感謝Python,我可以做那樣的事情。 例如,如果不是每次刪除我不得不添加的一封信我已經知道如何去做,我已經寫了這個程序。但在刪除會話字符串中的字母時,我覺得很困難,謝謝。 – checco94 2014-11-22 10:52:20

+0

所以發佈你寫的代碼 - 沒有任何人給你他們的示例代碼,因爲它將是他們的代碼,在他們的風格。您需要的是您理解的解決方案,您可以將其納入代碼。 – 2014-11-22 10:59:27

回答

0

你需要編寫遞歸函數這個函數應該創造新詞,並與每一個新詞作爲參數調用本身,我建議你閱讀關於Python中的一些文件

樣本函數:。

def getWords(word): 

    result = {} 

    for x in range(1, len(word)+1): 
     newWord = word[0:x-1] + word[x:] 
     result[newWord] = getWords(newWord) 

    return result 

遞歸在這裏:result[newWord] = getWords(newWord)。我們將每個新單詞稱爲我們的功能。

你可以用if/else語句來改進它。現在即使是一個字符也會返回字典。

{ 'elp': { 'el': {'e': {}, 'l': {}}, 
       'ep': {'e': {}, 'p': {}}, 
       'lp': {'l': {}, 'p': {}}}