检查字符串是否为回文时出现递归错误

2024-04-19 21:13:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我写了这个检查字符串是否是回文的代码,但是在执行时输出显示一个“递归错误”。如何解决此问题?你知道吗

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:")

Tags: 字符串代码falsetruestringlenreturnif
2条回答
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:")

你犯了两个错误

第一个是退出条件,长度为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]检查它是否是回文

相关问题 更多 >