@Nalali98
Учусь на программиста с помощью книг

Алгоритм Евклида?

Сижу целый день и не могу понять как выполняется программа по коду.. Нахождение наибольшего общего делителя.
Вот код
Def gcd(a, b) :
    return a If b==0 else gcd(b, a%b)

Что непонятно: в случае если -а<b , как она будет работать.?
Вот к примеру
gcd(243,456)
Она будет делать - (456, 243%456)?
  • Вопрос задан
  • 283 просмотра
Решения вопроса 1
Alexandroppolus
@Alexandroppolus
кодир
если a < b, то a%b всегда равно a
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@AlexSku
Программист по автоматике
Да. На первом этапе a и b обмениваются местами (т.е. следующий вызов будет gcd(456, 243), так что а всегда больше b, до тех пор пока b не станет равным 0.
Ответ написан
@bbkmzzzz
Def gcd(a, b) :
    return a If b==0 else gcd(b, a%b)
# эквивалентно
def gcd(a,b):
    if b == 0:
        return a
    else:
        #вызываем сами себя (рекурсия)
        gcd(b, a % b)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы