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