这被认为是递归解决方案吗?
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])
我正在学习 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])