ps:这个问题只是被标记为重复,并且已经有一个答案。问题是,这个问题与另一个问题不一样。在这个问题中,我已经知道我的代码出错了。我问为什么这是错的。Python递归函数输入
这是udacity,我被要求解决一个问题:
定义过程is_palindrome,即需要输入一个字符串,并返回一个 布尔值,表示如果输入的字符串是回文。
提示:
基本情况:
''
=>True
递归案例:如果第一个和最后一个字符不匹配=>
False
如果它们匹配,是中间回文?
def is_palindrome(s):
if s=='':
return True
else:
if s[0]!=s[-1]:
return False
else:
s=s[1:-1]
is_palindrome(s)
而3输入的情况下尝试:
print is_palindrome('')
#>>> True
print is_palindrome('abab')
#>>> False
print is_palindrome('abba')
#>>> True
如果我离开我的代码那样,它会返回None的情况下,“阿爸”。它可以通过改变函数的最后一行到
return is_palindrome(s[1:-1])
固定请问为什么return
事?即使没有回报,不应该只是一次又一次地运行功能is_palindrome()
?
当'is_palindrome'再次运行并再次检查时,已经有一些'return',但是这些run-again-inner'return'不会被返回? –