Вот рекурсивная функция для поиска наибольшего общего делителя (НОД) двух чисел:
def gcd_recursive(a, b):
if b == 0:
return a
else:
return gcd_recursive(b, a % b)
Эта функция использует алгоритм Евклида для расчета НОД. Он рекурсивно делит большее число на меньшее и продолжает делить остаток на меньшее число, пока остаток не станет равным нулю. Тогда НОД представляет собой последний ненулевой остаток.
Альтернативные методы поиска НОД:
- Итерационный алгоритм Евклида. Это итеративная версия алгоритма Евклида, в которой для вычисления НОД вместо рекурсии используется цикл.
- Метод простой факторизации. Этот метод включает в себя поиск простых делителей обоих чисел и определение общих делителей.
- Алгоритм двоичного НОД: также известный как алгоритм Штейна, он использует побитовые операции для эффективного вычисления НОД.
- Метод на основе деления: в этом методе числа последовательно делятся на меньшие числа, чтобы найти НОД.