2011-06-19 198 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荷蘭國際集團任何東西。

相關問題