为什么Python递归函数返回None

以下代码返回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)


素胚勾勒不出你
浏览 298回答 1
1回答

繁花不似锦

您将忽略递归调用的返回值:gcdIter (a,b%a) 递归调用与对其他函数的调用没有什么不同;如果那是您试图产生的结果,您仍然需要对该调用的结果做些事情。您需要将返回值传递给returnreturn 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)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python