2011-06-19 63 views
2

我有一个很难理解为什么我不能从这个简单的功能分配一个返回值的变量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 

回答

10

您在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) 
8

你忘了返回递归结果。

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

你忘了return

return euclidAlgorithm(n, r) 
0

在递归情况下,你的功能不return荷兰国际集团任何东西。

相关问题