这被认为是递归解决方案吗



我正在学习Python,遇到了一个漂亮的递归函数来确定字符串是否是回文,但当我尝试自己复制解决方案时,我想出了这个非常不雅的解决方案。你把它称为递归函数还是迭代函数?我很感激任何关于如何思考";递归地";?

def pal(s,i):
if len(s)//2 ==i:
return True
else:
if s[i] != s[len(s)-1-i]:
return False
else:
i=i+1      
return((pal(s,i)))

print(pal ("abccba",0))

任何调用自己的函数都是

递归函数通过观察return之后不需要else:,可以在一定程度上简化代码——如果满足条件,则代码的其余部分将无法执行,因为return将已经退出函数。

然而,这个问题的适当的递归解决方案可能会阐明一个接近于问题散文描述的解决方案。让我们说"一个字符串是回文当且仅当它最多只有一个字符长,或者如果第一个字母等于最后一个字母,并且字符串的其余部分也是回文"在代码中,这看起来像

def palindrome(mystring):
if len(mystring) <= 1:
return True
if mystring[0] != mystring[-1]:
return False
return palindrome(mystring[1:-1])

最新更新