使用python中的递归解决方案在字符串列表中查找字谜

使用python中的递归解决方案在字符串列表中查找字谜,python,recursion,variable-assignment,anagram,Python,Recursion,Variable Assignment,Anagram,我试图解决以下问题:有一个如下列表: [你好,ih,再见,aoic,酒吧,富,拉布,oof] 在传递给函数之后,列表应该只减少到那些首先出现在列表中的元素,不包括它们后面的所有字谜 因此,它应该输出: [嗨,再见,巴,福] 我试图递归地解决这个问题,并得到当前的解决方案,由于变量result last return stmt上的referenced before赋值错误,该解决方案中断 我非常感谢你的任何暗示 def fls: def不是第一个单词: 返回not sortedfirst==sor

我试图解决以下问题:有一个如下列表:

[你好,ih,再见,aoic,酒吧,富,拉布,oof] 在传递给函数之后,列表应该只减少到那些首先出现在列表中的元素,不包括它们后面的所有字谜

因此,它应该输出:

[嗨,再见,巴,福] 我试图递归地解决这个问题,并得到当前的解决方案,由于变量result last return stmt上的referenced before赋值错误,该解决方案中断

我非常感谢你的任何暗示

def fls: def不是第一个单词: 返回not sortedfirst==sortedword和word或None 如果是ls: first=ls[0] rest=ls[1:] legal_str=[在rest中不是第一个,逐字逐句] 结果=ListFilterOne,[first]+legal_str 返回结果[1:] 其他: 返回结果
当您到达递归的末尾时,ls为空,因此当您返回结果时,它永远不会在最后一次调用中定义

你忘了还第一个。将return fresult[1:]更改为return[first]+fresult[1:]

返回空列表将修复您的错误:

def fls: def不是第一个单词: 返回not sortedfirst==sortedword和word或None 如果是ls: first=ls[0] rest=ls[1:] legal_str=[在rest中不是第一个,逐字逐句] 结果=ListFilterOne,[first]+legal_str 返回[first]+fresult[1:] 其他: 返回[] printf[hi,ih,ciao,aoic,bar,foo,rab,oof] ['hi','ciao','bar','foo']