如何修复递归实现的回文判断函数返回None的问题?
修复回文判断函数返回None的问题
你的回文判断函数存在逻辑漏洞:当字符串首尾字符不相等时,函数没有定义返回值,Python会默认返回None。哪怕测试回文字符串时可能得到正确结果,但只要输入非回文字符串,就会出现返回None的情况。
修复方案很简单,在函数末尾添加一个明确的返回值,处理首尾字符不匹配的场景:
def palindrome(string): if len(string) <= 1: return True if string[0] == string[-1]: return palindrome(string[1:-1]) # 首尾字符不相等时,直接判定不是回文 return False
修复逻辑说明
- 当字符串长度小于等于1时,直接返回
True(已经是回文或空串) - 若首尾字符相等,递归验证去掉首尾后的子串
- 若首尾字符不相等,直接返回
False,明确告知不是回文
这样修改后,无论输入是否为回文字符串,函数都会返回明确的布尔值,不会再出现None的情况。测试palindrome('kjhhjk')会返回True,测试palindrome('abc')会返回False。
内容的提问来源于stack exchange,提问作者comiser
相关产品推荐
相关产品推荐

