如何解决用回文递归
我有一个使用 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_palindrome
的递归版本的一种方法是将 for
循环替换为对 check_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)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。