我有一个代码,它基本上解决了Project Euler中的一个问题,目的是找出前20个自然数的LCM。
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'
我能知道为什么吗?
试试看
必须返回递归调用返回的值。
RFIND
也有类似的问题。你不正确地实现了你的递归。
它不会返回
NoneType
。它正在返回None
。分区说它不知道如何划分类型int
和NoneType
,因为这是您要划分的类型。举个例子正如你所看到的,它并没有说它不能划分“g”和6,而是说它不能划分“str”和“int”。因此:
正如这里其他人已经指出的,它返回
None
,因为您忘记了return
语句。相关问题 更多 >
编程相关推荐