我需要定义一个递归函数来检查字符串是否是回文。
下面是我的代码:
def palindrome_recur(string):
if len(string)==0 or 1:
return True
else:
if string[0] == string[-1]:
return palindrome_recur(string[1:-2])
else:
return False
它传递了一些测试用例,但不适用于字符串"chipmunks"
。谁能告诉我我可能忽略了什么?
答案 0 :(得分:1)
您应该将递归调用传递为:return palindrome_recur(string[1:-1])
。
此外,您的len
检查不正确。这样做:
if len(strg)==0 or len(strg)==1:
答案 1 :(得分:1)
问题在于:
if len(string)==0 or 1:
检查len(string) == 0
或1
中的任何一个是否为真。由于1
始终为true,因此整个表达式始终为true,并且函数始终返回True。
你应该使用
if len(string) <= 1:
代替。
然后,你会发现索引到-2的问题是其他答案提到的。