python:递归检查判断字符串是否为回文

标签 python string recursion

我的任务是定义一个过程 is_palindrome,它将一个字符串作为输入,并返回一个 bool 值,指示输入字符串是否为回文。在这种情况下,单个字母应返回 True,空字符串 '' 也应如此。

不幸的是,我没有得到预期的结果。感谢您的帮助。

我的代码版本 1:

def is_palindrome(s):
    if s == '':
        return True
    else:
        if (ord(s[0]) - ord(s[len(s)-1])) == 0:
            is_palindrome(s[1:len(s)-1])
        else:
            return False

print is_palindrome('')
#>>> True    (expected = True)

print is_palindrome('abab')
#>>> False    (expected = False)

print is_palindrome('abba')
#>>> None    (expected = True)

print is_palindrome('andrea')
#>>> None    (expected = False)

print is_palindrome('abaaba')
#>>> None    (expected = True)

我通过调试器跟踪我的代码,看起来逻辑是正确的,因为代码采用了适当的路径。但是,对于上面突出显示的某些情况,最终结果似乎切换为“无”。

如果我将代码更改为以下内容:

我的代码版本 2:

def is_palindrome(s):
        if s == '':
            result = True
        else:
            if (ord(s[0]) - ord(s[len(s)-1])) == 0:
                is_palindrome(s[1:len(s)-1])
            else:
                result = False
        return result

print is_palindrome('')
#>>> True    (expected = True)

print is_palindrome('abab')
#>>> False    (expected = False)

print is_palindrome('abba')
#>>> Error    (expected = True)
UnboundLocalError: local variable 'result' referenced before assignment 

print is_palindrome('andrea')
#>>> Error   (expected = False)         
UnboundLocalError: local variable 'result' referenced before assignment

print is_palindrome('abaaba')
#>>> Error    (expected = True)
UnboundLocalError: local variable 'result' referenced before assignment

最佳答案

在您的第一个示例中,您忘记了返回语句:

def is_palindrome(s):
    if s == '':
        return True
    else:
        if (ord(s[0]) - ord(s[len(s)-1])) == 0:
            # v-- forgot this here
            return is_palindrome(s[1:len(s)-1])
        else:
            return False

关于python:递归检查判断字符串是否为回文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11496637/

相关文章:

python - 如何向 pandas df 中的分组项目添加标量值

Python:Pandas 将每一行连接成一个字符串

Java-为什么我的递归 Draw tree 方法输出不正确

algorithm - 递归方程

javascript - 如何在 JavaScript 中检查文件名是否包含子字符串?

list - 如何将递归函数的值存储在序言的列表中?

python - 获取 Plotly 中所有可用标记形状的列表

python - python wave模块可以接受StringIO对象吗

python - Django on Heroku dumpdata 输出不完整

python - 在python中将字符串写入文件