2017-10-04 38 views
0

下面是代碼。 main()測試假設返回最大公約數,但返回None類型。不理解的回報在GCD爲什麼輸出沒有返回類型

class Fraction: 
    def __init__(self, x, y): 
     self._x = x 
     self._y = y 

    def gcd(self): 
     p = self._gcd(self._x, self._y) 
     return p 

    def _gcd(self, x, y): 
     if (x % y == 0): 
      return y 
     else: 
      _gcd(y, x%y) 


def main(): 
    f = Fraction(6,4) 
    return f.gcd() 
if __name__ == '__main__': 
    print (main()) 
+1

在'_gcd'不返回任何東西,所以如果函數可以在沒有'return'結束'else'條款,它返回'None' –

回答

1

你是不是在else情況下返回任何東西調用的問題,所以你得到的None返回類型。更改遞歸調用:

_gcd(y, x%y)

return self._gcd(y, x%y)