Описание задачи
Программа принимает на вход два числа и находит наименьшее общее кратное (НОК) при помощи рекурсии.
Решение задачи
- Принимаем два числа и записываем их в отдельные переменные.
- Вводим переменную, которая в начале работы функции принимает значение наибольшей из двух переменных.
- Проверяем, делится ли без остатка число, содержащееся во вновь введенной переменной, на оба данных нам числа одновременно.
- Если делится, то функция прекращает свою работу и выводит это число, которое и будет наименьшим общим кратным (НОК).
- Если нет, то опять вызывается эта рекурсивная функция, в которой значение переменной еще раз увеличивается на величину наибольшего из данных в задаче чисел. И так будет повторяться, пока не выполнится условие делимости без остатка на оба числа.
- После того как функция завершит свою работу, значение наименьшего общего кратного (НОК) выводится на экран.
Исходный код
Ниже дан исходный код, который осуществляет нахождение наименьшего общего кратного (НОК) с использованием рекурсии. Результаты работы программы также даны ниже.
def lcm(a, b):
lcm.multiple = lcm.multiple + b
if ((lcm.multiple % a == 0) and (lcm.multiple % b == 0)):
return lcm.multiple;
else:
lcm(a, b)
return lcm.multiple
lcm.multiple = 0
a = int(input("Введите первое число:"))
b = int(input("Введите второе число:"))
if (a > b):
LCM = lcm(b, a)
else:
LCM = lcm(a, b)
print("НОК:")
print(LCM)
Объяснение работы программы
- Пользователь вводит два числа и они записываются в переменные
aиb. - Также вводится еще одна переменная,
lcm.multiple, которая для начала инициируется нулем. - Далее проверяется, какое из введенных чисел больше, чтобы передать их в рекурсивную функцию
lcm()в порядке возрастания. - В функции
lcm()на первом шаге значение переменной увеличивается на величину наибольшего из введенных пользователем чисел. То есть при первом вызове функции значение переменной становится равным этому числу. - Затем происходит проверка, делится ли значение переменной
lcm.multipleбез остатка на оба наших числа одновременно. Если делится, то функция прекращает свою работу и выводит в качестве результата значение переменнойlcm.multiple. - Если нет, то опять вызывается рекурсивная функция
lcm(), в которой значение переменнойlcm.multipleеще раз увеличивается на величину наибольшего из данных в задаче чисел. И так будет повторяться, пока не выполнится условие делимости без остатка на оба числа. - После того как функция завершит свою работу, значение наименьшего общего кратного (НОК) выводится на экран.
Результаты работы программы
Пример 1: Введите первое число:126 Введите второе число:12 НОК: 252 Пример 2: Введите первое число:25 Введите второе число:5 НОК: 25

