Описание задачи
Программа принимает на вход два числа и при помощи рекурсии находит их произведение.
Решение задачи
- Принимаем на вход два числа и записываем их в отдельные переменные.
- Передаем эти переменные в качестве аргументов в рекурсивную функцию.
- В начале работы функции проверяем, является ли первый аргумент меньше второго. Если является, то вызываем данную функцию вновь, меняя аргументы местами.
- В качестве базового условия рекурсии принимаем равенство
0
второго аргумента функции (меньшего). Пока второй аргумент не равен0
, функция возвращает сумму первого аргумента и рекурсивный вызов самой себя, где второй аргумент уменьшается на1
. - Когда второй аргумент уменьшится до
0
, функция при последнем вызове возвратит0
и ее работа завершится. - Выводим результат на экран.
- Конец.
Исходный код
def product(a, b): if (a < b): return product(b, a) elif (b != 0): return (a + product(a, b-1)) else: return 0 a = int(input("Введите первое число: ")) b = int(input("Введите второе число: ")) print("Произведением двух чисел будет: ", product(a, b))
Объяснение работы программы
- Пользователь вводит два числа и они записываются в переменные
a
иb
. - Передаем эти переменные в качестве аргументов в рекурсивную функцию
product()
. - В начале работы функции проверяем, какой из аргументов больше. Если первый аргумент меньше второго, то вызываем данную функцию вновь, меняя аргументы местами, то есть
product(b, a)
. - В качестве базового условия рекурсии принимаем равенство
0
второго аргумента функции (меньшего). Пока второй аргумент не равен0
, функция возвращает сумму первого аргумента и рекурсивный вызов самой себя, где второй аргумент уменьшается на единицу:a + product(a, b-1)
. - Когда второй аргумент уменьшится до
0
, функция при последнем вызове возвратит0
и ее работа завершится. Таким образом, мы в результате накопили сложение числаa
c самим собой ровноb
раз, что как раз эквивалентно умножениюa
наb
. - Выводим результат на экран.
Результаты работы программы
Пример 1: Введите первое число: 12 Введите второе число: 10 Произведением двух чисел будет: 120 Пример 2: Введите первое число: 12 Введите второе число: 11 Произведением двух чисел будет: 132