为了账号安全,请及时绑定邮箱和手机立即绑定

为什么Python递归函数返回None

为什么Python递归函数返回None

素胚勾勒不出你 2019-12-02 08:04:51
以下代码返回None某些值(例如306, 136),42, 84返回某些值(),正确返回答案。在print a和return a应产生相同的结果,但它并不:def gcdIter (a,b):    c = min (a,b)    d = max (a,b)    a = c    b = d    if (b%a) == 0:        print a        return a    gcdIter (a,b%a)    print gcdIter (a,b)
查看完整描述

1 回答

?
繁花不似锦

TA贡献1851条经验 获得超4个赞

您将忽略递归调用的返回值:


gcdIter (a,b%a) 

递归调用与对其他函数的调用没有什么不同;如果那是您试图产生的结果,您仍然需要对该调用的结果做些事情。您需要将返回值传递给return


return gcdIter (a,b%a)    

请注意,分配时可以分配给多个目标:


def gcdIter(a, b):

    a, b = min(a, b), max(a, b)

    if b % a == 0:

        return a

    return gcdIter(a, b % a)  

您真的不需要关心这里的较大和较小值。一个更紧凑的版本是:


def gcd_iter(a, b):

    return gcd_iter(b, a % b) if b else abs(a)



查看完整回答
反对 回复 2019-12-03
  • 1 回答
  • 0 关注
  • 297 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信