Нахождение произведения двух чисел с использованием рекурсии

Описание задачи

Программа принимает на вход два числа и при помощи рекурсии находит их произведение.

Решение задачи

  1. Принимаем на вход два числа и записываем их в отдельные переменные.
  2. Передаем эти переменные в качестве аргументов в рекурсивную функцию.
  3. В начале работы функции проверяем, является ли первый аргумент меньше второго. Если является, то вызываем данную функцию вновь, меняя аргументы местами.
  4. В качестве базового условия рекурсии принимаем равенство 0 второго аргумента функции (меньшего). Пока второй аргумент не равен 0, функция возвращает сумму первого аргумента и рекурсивный вызов самой себя, где второй аргумент уменьшается на 1.
  5. Когда второй аргумент уменьшится до 0, функция при последнем вызове возвратит 0 и ее работа завершится.
  6. Выводим результат на экран.
  7. Конец.

Исходный код

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))

Объяснение работы программы

  1. Пользователь вводит два числа и они записываются в переменные a и b.
  2. Передаем эти переменные в качестве аргументов в рекурсивную функцию product().
  3. В начале работы функции проверяем, какой из аргументов больше. Если первый аргумент меньше второго, то вызываем данную функцию вновь, меняя аргументы местами, то есть product(b, a).
  4. В качестве базового условия рекурсии принимаем равенство 0 второго аргумента функции (меньшего). Пока второй аргумент не равен 0, функция возвращает сумму первого аргумента и рекурсивный вызов самой себя, где второй аргумент уменьшается на единицу: a + product(a, b-1).
  5. Когда второй аргумент уменьшится до 0, функция при последнем вызове возвратит 0 и ее работа завершится. Таким образом, мы в результате накопили сложение числа a c самим собой ровно b раз, что как раз эквивалентно умножению a на b.
  6. Выводим результат на экран.

Результаты работы программы

Пример 1:
Введите первое число: 12
Введите второе число: 10
Произведением двух чисел будет:  120
 
Пример 2:
Введите первое число: 12
Введите второе число: 11
Произведением двух чисел будет:  132