私は基本的にProject Eulerの問題の1つを解決し、最初の20の自然数のLCMを見つけることを目指すコードを持っています。Pythonで 'NoneType'が返されるのはなぜですか?
def GCD(a, b): #Euclid's algorithim
if (b == 0):
return a
else:
GCD(b, a % b)
def LCM(a, b): #LCM(a,b) = a*b/GCD(a,b)
x = GCD(a, b)
return ((a * b)/x)
def RFIND(a, b):
if (b == 20):
return a
else:
RFIND(LCM(a, b), b + 1)
print RFIND(2, 1)
しかし、実行中にエラーが発生します。
return ((a * b)/x)
TypeError: unsupported operand type(s) for /: 'int' and 'NoneType'
なぜわかりますか?
うんうん。しかし、私はそれを適切に視覚化することはできません。 – Shubham
@Shub:GCDへの再帰呼び出しを行っていますが、返さない場合、その呼び出しが解決されたときに、else文のためにvoidを返すことが起こります。 Pythonでは、実行して何も返さない場合、メソッドはNoneTypeを返します。 –
@jesus:それを得ました。ありがとう! – Shubham