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