Python递归回文判断函数返回True失效问题咨询
递归回文判断函数逻辑问题说明
问题核心原因
你的函数在首尾字符相等的elif分支没有显式返回递归调用的结果。Python中所有函数如果执行结束没有命中return语句,会默认返回None,这就是传入回文字符串时没有正确返回值的原因。
错误执行流程示例(以palindrome('level')为例)
- 第一层调用:
len('level')=5>1,首尾字符l相等,执行palindrome('eve'),但没有返回该调用的结果,当前层直接默认返回None - 第二层调用
palindrome('eve'):len=3>1,首尾e相等,执行palindrome('v'),同样没有返回结果,当前层默认返回None - 第三层调用
palindrome('v'):命中len<=1的分支返回True,但这个结果只会传递到第二层的调用位置,不会继续向外层传递,最终外层拿到的就是第一层默认返回的None
修复后的代码
def palindrome(string): if len(string) <= 1: return True elif string[0] == string[-1]: # 新增return,把递归调用的结果逐层向外返回 return palindrome(string[1:-1]) else: return False
修复后调用palindrome('level')会正确返回True,非回文字符串的判断逻辑也不受影响。
内容的提问来源于stack exchange,提问作者Yassine
相关产品推荐
相关产品推荐

