用递归函数检查Python中的回文
我需要定义一个递归函数来检查一个字符串是否是回文。
下面是我的代码:
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"
就不行了。有没有人能告诉我我可能忽略了什么?
2 个回答
1
你应该把递归调用改成这样:return palindrome_recur(string[1:-1])
。
另外,你的len
检查也不太对。可以这样做:
if len(strg)==0 or len(strg)==1:
1
问题是这样的:
if len(string)==0 or 1:
这段代码检查的是字符串的长度是否为0,或者数字1是否为真。因为数字1总是被认为是真的,所以整个表达式总是为真,这样你的函数就总是返回True。
你应该使用
if len(string) <= 1:
来替代。
这样,你就会发现其他答案提到的关于索引为-2的问题。