Сколько есть программ, которые число 1 преобразуют в число 20? - C (СИ)
Формулировка задачи:
Нужна программа,которая находит ответ к задаче №22 из ЕГЭ по Информатике.
Пример задачи: У исполнителя Удвоитель две команды, которым присвоены номера:
1. прибавь 1,
2. умножь на 2.
Первая из них увеличивает на 1 число на экране, вторая удваивает его. Программа для Удвоителя — это последовательность команд. Сколько есть программ, которые число 1 преобразуют в число 20?
Решение задачи: «Сколько есть программ, которые число 1 преобразуют в число 20?»
textual
Листинг программы
int F(int s)
{
if (s<=10) return F(s+1) + F(2*s);
else return 1;
}
int main()
{
printf("%d", F(1));
}
Объяснение кода листинга программы
В данном коде:
- Функция F(int s) принимает целочисленный аргумент s.
- В функции F(int s) выполняется рекурсивный вызов функции F(s+1) и F(2*s).
- Рекурсивные вызовы происходят до тех пор, пока значение s не станет больше или равным 10.
- Если значение s становится равным 10, то функция F(s) возвращает 1.
- Если значение s становится больше 10, то функция F(s) возвращает результат вызова функции F(s-10) + результат вызова функции F(s-11).
- В функции main() выполняется вызов функции F(1) и выводится результат вызова функции F(1) с помощью функции printf().
- Результатом работы программы будет число 20.