Задача 1
def f(x,y):
if x>y:
return 0
if x==y:
return 1
if x<y:
return f(x+3,y)+f(x*3,y)
print(f(3,93))
Задача 2
def f(x,y):
if x>y:
return 0
if x==y:
return 1
if x<y:
return f(x+1,y)+f(x*2,y)+f(x+3,y)
print(f(3,12)*f(12,16))
Задача 3
def f(x,y):
if x>y or x==17:
return 0
if x==y:
return 1
if x<y:
return f(x+1,y)+f(x*2,y)
print(f(1,10)*f(10,35))
Для самостоятельного решения
1. Исполнитель преобразует число на экране. У исполнителя есть две команды, которым присвоены номера:
Вычти 1
Найди целую часть от деления на 2
Первая из них уменьшает число на экране на 1, вторая заменяет число на экране на целую часть от деления числа на 2.
Программа для исполнителя – это последовательность команд.
Сколько существует программ, для которых при исходном числе 89 результатом является число 7, и при этом траектория вычислений содержит число 30?
2. Исполнитель преобразует число, записанное на экране. У исполнителя есть три команды, которым присвоены номера:
1. Прибавить 1
2. Прибавить 2
3. Умножить на 2
Первая команда увеличивает число на 1, вторая – на 2, третья – вдвое.
Программа для исполнителя – это последовательность команд.
Сколько существует таких программ, которые исходное число 3 преобразуют в число 25 и при этом в программе есть все три команды?
Комментариев нет:
Отправить комментарий