所以我正在用Python编写一个程序,以获取任意数量数字的最大公约数。
def GCD(numbers):
if numbers[-1] == 0:
return numbers[0]
# i'm stuck here, this is wrong
for i in range(len(numbers)-1):
print GCD([numbers[i+1], numbers[i] % numbers[i+1]])
print GCD(30, 40, 36)
该函数接受一个数字列表。这应该打印出2。然而,我不明白如何递归使用算法以处理多个数字。有人可以解释一下吗?
更新后,仍然无法工作:
def GCD(numbers):
if numbers[-1] == 0:
return numbers[0]
gcd = 0
for i in range(len(numbers)):
gcd = GCD([numbers[i+1], numbers[i] % numbers[i+1]])
gcdtemp = GCD([gcd, numbers[i+2]])
gcd = gcdtemp
return gcd
好的,问题解决了
def GCD(a, b):
if b == 0:
return a
else:
return GCD(b, a % b)
然后使用reduce函数,就像这样
reduce(GCD, (30, 40, 36))