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

Is this considered a recursive solution?

我正在学习 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])