【发布时间】:2018-12-11 17:16:20
【问题描述】:
我有一个任务,我必须编写一个 python 代码,使用返回布尔值的递归函数来检查字符串是否为回文,但我不允许使用反向切片或循环,也不允许我使用更改函数格式,这是我的代码,但它始终返回 True
def is_palindrome(s):
res = []
s = ['']
if len(s) < 2:
return True
else:
rev_s = is_palindrome(s[1:]) + s[0]
res.append(rev_s)
if res == s:
return True
return False
【问题讨论】:
-
您将函数第二行的
s重新分配给['']。它的长度总是小于2,所以你总是会返回True。我想你不想要那条线:s = ['']。 -
格式错误 - 您的身份已关闭。请修复。
-
你在这里使用了切片:
is_palindrome(s[1:]). -
@Thaa'er,同样的函数签名
with 1 pparameter也可以实现你的目标。这个概念是在第二次递归调用中改变参数(to list)。我已将代码粘贴到我的答案中,请检查。
标签: python python-2.7 recursion palindrome