Algorytm euklidesowy (GCD) z wieloma liczbami?

Piszę więc program w Pythonie, aby uzyskać GCD o dowolnej liczbie liczb.

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)

Funkcja pobiera listę numerów. Powinno to wydrukować 2. Nie rozumiem jednak, jak rekurencyjnie używać algorytmu, aby mógł obsługiwać wiele liczb. Czy ktoś może wyjaśnić?

zaktualizowany, nadal nie działa:

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

Ok, rozwiązałem to

def GCD(a, b):

    if b == 0:
        return a
    else:
        return GCD(b, a % b)

a następnie użyj zmniejszenia, jak

reduce(GCD, (30, 40, 36))

questionAnswers(6)

yourAnswerToTheQuestion