Vũ *_*hĩa 0 python recursion function
ps:这个问题只是标记为重复,已经有了答案.问题是,这个问题与另一个问题不一样.在这个问题上,我已经知道我的代码出错了.我问为什么这是错的.
这是我要求解决的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)
Run Code Online (Sandbox Code Playgroud)
尝试3个输入案例:
print is_palindrome('')
#>>> True
print is_palindrome('abab')
#>>> False
print is_palindrome('abba')
#>>> True
Run Code Online (Sandbox Code Playgroud)
如果我保留我的代码,那么对于案例'abba',它将返回None.可以通过将函数的最后一行更改为可以修复
return is_palindrome(s[1:-1])
Run Code Online (Sandbox Code Playgroud)
请问为什么这return件事?即使没有返回,它不应该只是is_palindrome()一次又一次地运行该功能吗?
即使没有返回,它是不是只是一次又一次地运行函数is_palindrome()?
当然 - 它会一遍又一遍地运行它,但它不会返回任何有用的东西,所以你永远不会看到结果.这是因为第一次is_palindrome调用将返回None独立于递归调用的返回值is_palindrome(None当您没有指定返回值时是Python的默认值).