Исполнитель ГО преобразует число на экране. У исполнителя ГО две команды, которым присвоены номера:
. Прибавить
. Сделать нечётное
Первая из этих команд увеличивает число на экране на
, вторая переводит число
в число
. Например, вторая команда переводит число
в число
. Программа для исполнителя ГО – это последовательность команд.
Сколько существует таких программ, которые число преобразуют в число
, причём траектория вычислений не содержит число
?
Траектория вычислений программы – это последовательность результатов выполнения всех команд программы.
Рекурсия:
def f(x, y):
if x > y or x == 26:
return 0
elif x == y:
return 1
else:
return f(x + 1, y) + f(x * 2 + 1, y)
print(f(1, 27))
Динамика:
a = [0] * 28
a[1] = 1
for i in range(2, 28):
a[i] = a[i - 1]
if i % 2 == 1:
a[i] += a[i // 2]
if i == 26:
a[i] = 0
print(a[27])