所以我正在用Python编写一个程序来获取任意数量的GCD.
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)
Run Code Online (Sandbox Code Playgroud)
该函数采用数字列表.这应该打印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
Run Code Online (Sandbox Code Playgroud)
好的,解决了
def GCD(a, b):
if b == 0:
return a
else:
return GCD(b, a % b)
Run Code Online (Sandbox Code Playgroud)
然后使用reduce,就像
reduce(GCD, (30, …
Run Code Online (Sandbox Code Playgroud) 我想为数字列表计算gcd。但是我不知道我的代码有什么问题。
A = [12, 24, 27, 30, 36]
def Greatest_Common_Divisor(A):
for c in A:
while int(c) > 0:
if int(c) > 12:
c = int(c) % 12
else:
return 12 % int(c)
print Greatest_Common_Divisor(A)
Run Code Online (Sandbox Code Playgroud)