Python 带回文的递归

Python 带回文的递归,python,string,recursion,substring,palindrome,Python,String,Recursion,Substring,Palindrome,我用python编写了一个递归语句 声明 回文 回文是一个向后读和向前读一样的单词(女士,中午,雷达…)。 编写一个程序,读取字符串并打印所有回文,这可以通过删除字符串中的一些字符来获得。产生的回文不需要是英语单词* 限制: 不要打印长度为1的回文(一个字母的回文) 每个回文只打印一次 我已经编写了下面的代码,它工作得非常好,但是在第二个定义的函数中,我没有使用递归,因为我不知道如何处理语句的这一部分。 如果有人能帮助我,我将非常感激 def find_subsets(seq, n):

我用python编写了一个递归语句

声明

回文

回文是一个向后读和向前读一样的单词(女士,中午,雷达…)。 编写一个程序,读取字符串并打印所有回文,这可以通过删除字符串中的一些字符来获得。产生的回文不需要是英语单词*

限制:

  • 不要打印长度为1的回文(一个字母的回文)
  • 每个回文只打印一次
我已经编写了下面的代码,它工作得非常好,但是在第二个定义的函数中,我没有使用递归,因为我不知道如何处理语句的这一部分。 如果有人能帮助我,我将非常感激

def find_subsets(seq, n):
    if n != 0:
        result = []
        subsets = find_subsets(seq, n-1)
        for subset in subsets:
            result += [subset]
            result += [[seq[n-1]] + subset]
        return result
    else:
        return [[]]
def check_palindrome(subsetsList):
    finalList = []
    for x in subsetsList:
        if x[::-1] == x and len(x)>1:
            string = " ".join(x)
            print(string)
        else:
           continue
word = input("Write string: ")
check_palindrome(find_subsets(word, len(word)))

实现递归版本的
check\u palindrome
的一种方法是将
for
循环替换为调用
check\u palindrome
。但是,为了避免无限循环,您需要从列表中删除一个值并对其进行处理,从而在每次递归调用时将
subsetsList
缩小1。最后,您需要检查
subsetsList
何时变为空并在该点退出递归

例如:

def check_palindrome(subsetsList):
    if not subsetsList:
        return
    
    x = subsetsList.pop()
    if x[::-1] == x and len(x)>1:
        string = " ".join(x)
        print(string)
    
    check_palindrome(subsetsList)

为什么
检查回文
需要使用递归?