だから私は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)
この関数は、数値のリストを受け取ります。これは 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))