2014-11-22 36 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': {}}}