用递归函数检查Python中的回文

0 投票
2 回答
6920 浏览
提问于 2025-04-18 02:40

我需要定义一个递归函数来检查一个字符串是否是回文。

下面是我的代码:

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的问题。

撰写回答