Шаблон рекурсивной функции
# Рекурсивная функция
def rec(now, last):
if now == last:
# Проверка, что получили нужное число
return 1
if now > last:
# Проверка, что превысили нужное число
return 0
# Вызов рекурсивной функции с учетом заданных команд изменения числа
return rec(now
+ ???, last) + ???
# Основная программа
print(rec(???))
# Вызов рекурсивной функции с начальными значениями
Задача
Исполнитель преобразует число на экране. У исполнителя есть три команды, которым присвоены номера:
1. Прибавить 1
2. Прибавить 3
3. Умножить на 2
Программа для исполнителя – это последовательность команд.
Сколько существует программ, для которых при исходном числе 12 результатом является число 40, и при этом траектория вычислений содержит число 26 и 30, но не содержит число 25?
Траектория вычислений программы – это последовательность результатов выполнения всех команд программы. Например, для программы 121 при исходном числе 7 траектория будет состоять из чисел 8, 11, 12.