我已经写下了这段代码,该代码检查字符串是否是回文,但是在执行时输出显示“递归错误”。我该如何解决这个问题?
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:")
答案 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:")