先看代码
def dis(a, b, num):
if a < b:
a, b = b, a
if a == b:
return num + 1
dis(a-b, b, num + 1)
print(dis(2019, 324, 0))
大家可以尝试预测一下print的结果
结果:None
我也疑惑了为什么是None呢?
debug
这是第一次运行到return语句这里,按照我错误的思考方式,dis()函数就应该退出了,我继续点击调试结果程序还在运行
这里程序结束了上一层dis()函数但是return是返回给它的上一层dis(),到最后主体函数dis()并没有return语句, 所以返回None
总结
dis()函数产生的子函数并不会return,只有主体函数才会return
修改代码
def dis(a, b, num):
if a < b:
a, b = b, a
if a == b:
return num + 1
# 注意这里
return dis(a-b, b, num + 1)
print(dis(2019, 324, 0))