检查字符串是否是回文时的递归错误

时间:2019-05-15 12:43:52

标签: python python-3.x python-3.7

我已经写下了这段代码,该代码检查字符串是否是回文,但是在执行时输出显示“递归错误”。我该如何解决这个问题?

def palindrome(string):
    if len(string) < 1:
        return True
    else:
        if string[0] == string[-1]:
            return palindrome(string[::-1])
        else:
            return False

string = input("Enter a string:")
if palindrome(string)==True:
    print("String is palindrome")
else:
    print("String is not palindrome:")

2 个答案:

答案 0 :(得分:1)

您有两个错误,

第一个是退出条件,长度为1的字符串应该是回文。

您的第二个错误是string[::-1]返回字符串,但取反,不会减小大小。您想要检查减去第一个和最后一个元素的字符串,如下所示:string[1:-1]

def palindrome(string):
    if len(string) < 2:
        return True
    else:
        if string[0] == string[-1]:
            return palindrome(string[1:-1])
        else:
            return False
string="tacocat"
if palindrome(string): # You should avoid using "if x == True"
    print("String is palindrome")
else:
    print("String is not palindrome:")

如评论中所述,如果您不想进行递归操作,也可以通过string == string[::-1]来检查它是否是回文式

答案 1 :(得分:1)

def palindrome(string):
    if len(string) < 2:
        return True
    else:
        if string[0] == string[-1]:
            return palindrome(string[1:-1])
        else:
            return False
string=input(“Enter the string”)

if palindrome(string)==True:
    print("String is palindrome")
else:
    print("String is not palindrome:")