回文测试的递归实现

时间:2018-11-20 14:19:57

标签: python palindrome

我被要求定义一个递归函数

  • 采用字符串 和
  • 如果字符串是回文,则返回True,否则返回False

我想,因为我必须检查字符串中的空格,这可能是使用包装器包含在我的isPalindrome()函数中的绝佳机会。

我的代码:

def rem_spaces(string, g=''):
    """
    parameters : string of type str;
    returns : a string with all the spaces removed
    """

    if len(string)==0:
        return g
    if string[0]!=' ':

        return rem_spaces(string[1:], g+string[0])
    return rem_spaces(string[1:], g)

def isPalindrome(string):
    """
    parameters : string of type str
    returns : True if the string is a palindrome, False if not
    """
    string=rem_spaces(string)
    if len(string) % 2 != 0:
        return False
    if len(string)==0:
        return True
    if string[0]==string[-1]:
        return isPalindrome(string[1:-1])
    return isPalindrome(string[1:-1])


print(isPalindrome('ferdihe            '))

将输出以下内容:

True

我的代码有什么问题?

1 个答案:

答案 0 :(得分:1)

您为什么不这样做呢?

def ispalindrome(x):
    n=len(x)
    return x==x[::-1]

test = ' hannah '
ispalindrome(test)
#True

test = ' hannah'
ispalindrome(test)
#False