№ 11240 (Уровень: Средний) задача с сайта kompege.ru
**(М. Ишимов)** Исполнитель преобразует число на экране.
У исполнителя есть три команды, которые обозначены латинскими буквами:
A. Прибавить 2
B. Возвести в квадрат
C. Умножить на 3
Программа для исполнителя – это последовательность команд.
Сколько существует программ, для которых при исходном числе 2 результатом является число 64, если после выполнения команды B можно выполнить только команду A или C?
Комментарии к коду решения:
def F(a, b, flag):
- Определение функцииF
с параметрамиa
- переменная старта и траектории,b
- перменная стоп иflag
- переменная для учета действий.if a >= b:
- Проверка условия: еслиa
больше или равноb
(то есть переменнаяa
превысила наше условиеb
).return a == b
- Возвращаем результат сравненияa
иb
(True
, если равны, иначеFalse
).if flag == "B":
- Проверка условия: еслиflag
равен"B"
(если на предыдущем шаге была выполнена команда"B”
.return F(a + 2, b, "A") + F(a * 3, b, "C")
- Рекурсивный вызов функцииF
с новыми параметрами исходя из условий.return F(a + 2, b, "A") + F(a**2, b, "B") + F(a * 3, b, "C")
- Рекурсивный вызов функцииF
с новыми параметрами.print(f(2, 64, 0))
- Вывод результата вызова функцииF
с начальными параметрами (2, 64, 0).
def F(a, b, flag):
if a >= b:
return a == b
if flag == "B":
return F(a + 2, b, "A") + F(a * 3, b, "C")
return F(a+2, b, "A") + F(a**2, b, "B") + F(a*3, b, "C")
print(F(2, 64, 0))
**Присоединяйтесь и готовьтесь с нами: t.me/informatika_kege_itpy**
Автор статьи: @ilandroxxy