倒计时字母解算器递归Python

2024-10-01 00:28:59 发布

您现在位置:Python中文网/ 问答频道 /正文

def solver(word):
#trackerCount = len(word
convertedKey = sum(bytearray(word,'utf8'))
if(len(word)>=MIN_WORD_LENGTH):
    countdownLetters = wordmap.get(convertedKey)
    if(convertedKey in wordmap):
        for str in countdownLetters:
            if sorted(word)==sorted(str) and str not in result:
                result.update({str:len(str)})

    if(len(word)==9 and len(result)>0):
        return result
    tempList = list(word)
    for i in range(len(tempList)): 
        charTmp = tempList.pop()
        wordStr =''.join(tempList)
        tempList.insert(0,charTmp)
        solver(wordStr)
return result

我正在写一个使用递归函数的倒计时字母求解器。我想完全停止调用递归 当我找到最长的字母时起作用。例如,假设我向解算器函数传递了一个单词“education”。 让我们假设,我们没有任何教育的字谜,现在我想检查一下是否有长度的单词(8)。 如果有长度为8的单词,我想从函数中返回,但是如果没有8个字母,我想返回单词 检查7等等。我只想找到最长的单词。如果我有多个相同(长度)的单词,那就错了 作为最长的一个词,我想把它们都弄出来。上面的循环查找从max length(9)到min length(5)的所有单词。在

以上代码说明: 基本上,如果我没有9个字母(max)单词,那么我将弹出最后一个元素,创建一个tempWord(wordStr)插入charTemp(列表的最后一个元素),然后调用solver函数,去掉一个字母。上面的循环查找从max length(9)到min length(4)的所有单词。 以上代码的输出在这里。http://postimg.org/image/pgfixbglv/。请看一看,可能更有意义。在图片中,你可以看到9个字母单词。我希望我的递归函数在那一点上返回,但是如果没有9个字母,我想找8个,同样没有找到8个字母单词,继续到7在。在为了防止StackOverflow异常,我指定了最小字长。i、 e 5。在


Tags: 函数inlenif字母result单词length
1条回答
网友
1楼 · 发布于 2024-10-01 00:28:59

问题在于你的终止条款

if(len(word)==9 and len(result)>0):
    return result

这非常明确地表明,只有当你从一个9个字母的单词中找到一个结果时,你才会停止。除非len(word)为9,否则将使用递归代码。在

正如老话所说,如果你不想那样,那就不要那么做。只要检查一下你有什么结果,如果有,就把它还给我。我不知道仅此一项就足够了,因为您还没有演示如何收集通过下循环的各种运行的所有结果(因为您需要所有这些结果),也没有演示如何依次删除9个字母中的每一个,而留下其他8个字母。在

相关问题 更多 >