python return踩坑

先看代码

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
这是第一次运行到a==b的时候
这是第一次运行到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))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值