繁体   English   中英

将函数的返回值赋给变量

[英]Assigning return value of a function to a variable

我很难理解为什么我不能将这个简单函数的返回值赋给变量gcd

def euclidAlgorithm(m, n):
    if n == 0:
        print "n cannot be zero."
        return -1
    r = m % n # Remainder
    if r == 0:
        return n
    else:
        euclidAlgorithm(n, r)

if __name__ == "__main__":
    #Input values
    m = 54
    n = 36

    print "Input : m = ", m, " n = ", n
    gcd = euclidAlgorithm(m, n)
    if gcd == -1:
        print "Function terminated with an error"
    else:
        print "Output: gcd = ", gcd

我没有把gcd 18,而是在运行时得到这个:

Input : m =  119  n =  4
Output: gcd =  None

你在euclidAlgorithm(m, n)的末尾缺少一个return语句。 像这样:

def euclidAlgorithm(m, n):
    if n == 0:
        print "n cannot be zero."
        return -1
    r = m % n #Remainder
    if r == 0:
        return n
    else:
        return euclidAlgorithm(n, r)

你忘了返回递归的结果。

 ...
else:
    return euclidAlgorithm(n, r)

你忘了return

return euclidAlgorithm(n, r)

如果没有return关键字,该函数会进行递归调用,但在达到基本条件之前没有返回值。

请参阅: 在递归函数调用之前使用return子句与不使用函数调用有何不同?

因此,回归很重要。

在递归的情况下,你的函数不return任何东西。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM