用于检查Palindrome的Python递归函数

时间:2014-04-14 09:54:07

标签: python recursion

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

下面是我的代码:

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 个答案:

答案 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) == 01中的任何一个是否为真。由于1始终为true,因此整个表达式始终为true,并且函数始终返回True。

你应该使用

if len(string) <= 1:

代替。

然后,你会发现索引到-2的问题是其他答案提到的。