def func(value):
if value[-1] == 10:
print 'stop:', value[-1]
return 'find'
else:
del value[-1]
func(value) # 注释1
在用递归的时候,如果你的else的最后的语句,就是去执行func函数(对应注释1),像上面这样写,当我们给参数
value = range(1, 20),最后返回的是None。
如果修改成这样:return func(value) 那么你的代码可以返回‘find’。
我在调试里面,当多次递归后,满足条件进入if语句,最后return了,不是应该结束函数吗?可是调试进行下一步,还走到了注释1 这里,然后返回 None。
不经意写了这样一个递归,然后举了这个例子,发现只要else不用return返回就会导致最后的结果是None, 既然if都return了,函数应该返回了吧?我猜测这是一个什么机制,求大神解释一下。
代码是在python2.7.3上测试的,大家可以试试。