我的递归回文函数有什么问题?

时间:2016-10-12 14:54:31

标签: python recursion

我正在尝试用Python编写我的第一个递归函数。它应该用一个词作为输入,然后检查该词是否是回文。

这是我的代码:

def checkPalindrome(str):

    if len(str) == 1:
        return True

    elif str[0] == str[len(str)-1]:
        newstr = str.replace(str[0], "")
        newstr = str.replace(str[len(str)-1], "")
        checkPalindrome(newstr)

def main():
    word = raw_input("Give a name: ")

    if checkPalindrome(word):
        print '%s is a palindrome' % word
    else:
        print '%s is NOT a palindrome' % word

if __name__ == '__main__':
    main()

我遇到的问题是函数checkPalindrome()仅适用于1个字母的回文。它只返回True,例如" k"。对于非回文,它也正确地返回false。

但问题是:如果我给我的程序一个像wowow的回文,它应该通过调用自己返回True,直到字符串只有1个字符长,在这种情况下它应该通过检查字符串的长度为1返回true但是当我的程序在递归后返回True并且字符串只剩下一个字符后返回False!

我甚至检查过代码行"返回True"实际上是运行(通过调试器),它正在运行。但即使我进入回文,我最终也会在我的主函数中使用else语句。

有递归经验的人可以告诉我为什么我的函数似乎返回False,即使行"返回True"我进入回文时被叫了吗?

0 个答案:

没有答案