Источник: https://kpolyakov.spb.ru/
Исполнитель Калькулятор преобразует число, записанное на экране. У исполнителя есть три команды, которым присвоены номера:
1. Прибавь 1
2. Прибавь 3
3. Умножь на 2
Сколько существует программ, которые преобразуют исходное число 3 в число 21 и при этом траектория вычислений содержит число 8 и не содержит числа 12?
def f(a, b):
if a == b: # Если достигли b
return 1 # Возвращаем 1
if a > b or a == 12: # Если перешли за b или попали в 12
return 0 # Возвращаем 0
# Рекурсивный вызов функции
return f(a + 1, b) + f(a + 3, b) + f(a * 2, b)
print(f(3, 8) * f(8, 21))
Ответ: 228