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
我正在使用遞歸函數寫一個倒計時字母解算器。我想完全停止調用遞歸 函數,當我找到最長的字母。例如,假設我將一個詞「教育」傳遞給求解器函數。 讓我們假設,我們沒有任何教育的字謎,現在我想檢查是否有任何長度的單詞(8)。 如果有長度爲8的單詞,我想退出該功能,但如果沒有8個字母單詞我想 檢查7等等。我只想找到最長的單詞。關閉課程如果我有超過一個字(長度) 作爲最長的單詞,我想讓他們全部。上面的循環找到從最大長度(9)到最小長度(5)的所有單詞。倒計時字母解算器 - 遞歸Python
上面代碼說明: 基本上,如果我沒有9個字母(最大)字,那麼我彈出最後一個元素,創建一個tempWord(wordStr)插入charTemp(列表的最後一個元素),並調用求解器函數刪除了一個字母。上面的循環找到從最大長度(9)到最小長度(4)的所有單詞。 上面代碼的輸出在這裏。 http://postimg.org/image/pgfixbglv/。請看看,這可能會更有意義。在圖片中,你可以看到9個字母的單詞。我希望我的遞歸函數能夠在那個時候返回,但是如果沒有9個字母,我想查找8個字符,並且再次找不到8個字母單詞,然後移到7個等等。在防止出現StackOverflow異常的那一刻,我有指定最小字長。即5
我已經更新了整個功能。你能幫我解決嗎?問題仍然存在......如果我輸入解決方法(「edumation」)而不是「教育」。然後它會帶來全部8,7,6,5。如果沒有9個字母的字母「edumation」。我們檢查8個字母。一旦我們找到8個字母的單詞,我想退出這個功能,但是上面的實現會帶來8,7,6,5等所有單詞。 –
我很樂意提供幫助,但是如果沒有[MCVE ](http://stackoverflow.com/help/mcve)。除非我們能夠從您的帖子中重現問題,否則我們「正在用一隻手鬥爭」。目前,我沒有足夠的信息來說明** **和**結果**。而不是推測,我會等待完整的例子。如果有幫助,我可以使用我自己的詞彙庫來代替您使用的任何單詞列表。 – Prune