Математика ЕГЭ
Русский язык ЕГЭ
Математика 5-7
Математика ОГЭ
Информатика
Физика
Обществознание
Кликните, чтобы открыть меню

16. Рекурсия

1. Вспоминай формулы по каждой теме
2. Решай новые задачи каждый день
3. Вдумчиво разбирай решения

Рекурсивные алгоритмы в программировании (страница 7)

Задание 43 #15214

Ниже на трёх языках программирования записан рекурсивный алгоритм F. \[\begin{array}{ | l | l | l |} \hline Python & C++ & Pascal \\ \hline def\; F(n): & void\; F(int\; n) & procedure\; F(n:\; integer); \\ \quad if\; n\; >\; 1: & \{ & \quad begin \\ \quad\quad print(n) & \quad if\; (n\; >\; 1) & \quad\quad if\; n\; >\; 1\; then \\ \quad\quad F(n\; -\; 3) & \quad \{ & \quad\quad\quad begin \\ \quad\quad F(n-2) & \quad\quad cout\; <<\; n; & \quad\quad\quad \; \; writeln(n); \\ \quad \; \; \; & \quad\quad F(n-\; 3); & \quad\quad\quad \; \; \; F(n\; -\; 3); \\ & \quad\quad F(n\; -\; 2); & \quad\quad\quad \; \; \; F(n-2); \\ & \quad \} & end \\ & \} & end \\ \hline \end{array}\] Определите, что выведет программа при вызове функции F(7)? Цифры запишите в той последовательности, в которой они выводятся.

 

При вызове \(F(-1)\), \(F(0)\) и \(F(1)\) программа ничего не выведет. Пропишем весь алгоритм, начиная с \(F(2)\):
\( F(2)\rightarrow 2F(-1)F(0) = 2\\ F(3)\rightarrow 3F(0)F(1)= 3\\ F(4)\rightarrow 4F(1)F(2) = 42\\ F(5)\rightarrow 5F(2)F(3)=523\\ F(6)\rightarrow 6F(3)F(4)= 6342\\ F(7)\rightarrow 7F(4)F(5)= 742523\\ \)

Программа вывела \(742523\), это - ответ на вопрос задачи.

Ответ: 742523

Задание 44 #15215

Ниже на трёх языках программирования записан рекурсивный алгоритм F. \[\begin{array}{ | l | l | l |} \hline Python & C++ & Pascal \\ \hline def\; F(n): & void\; F(int\; n) & procedure\; F(n:\; integer); \\ \quad \; print(n) & \{ & \quad begin \\ \quad if\; n\; >\; 4: & \quad cout\; <<\; n; & \quad \; \; writeln(n); \\ \quad\quad print(n) & \quad if\; (n\; >\; 4) & \quad \; \; \; if\; n\; >\; 4\; then \\ \quad\quad F(n\; -\; 3) & \quad \{ & \quad\quad\quad begin \\ \quad\quad F(n-2) & \quad\quad cout\; <<\; n; & \quad\quad\quad \; \; writeln(n); \\ \quad \; \; \; & \quad\quad F(n-\; 3); & \quad\quad\quad \; \; \; F(n\; -\; 3); \\ & \quad\quad F(n\; -\; 2); & \quad\quad\quad \; \; \; F(n-2); \\ & \quad \} & end \\ & \} & end \\ \hline \end{array}\] Определите, что выведет программа при вызове функции F(7)? Цифры запишите в той последовательности, в которой они выводятся.

 

При вызове \(F(2)\) программа выведет 2, при вызове \(F(3)\) программа выведет 3, при вызове \(F(4)\) программа выведет 4. Пропишем весь алгоритм, начиная с \(F(5)\):
\( F(5)\rightarrow 55F(2)F(3)=5523\\ F(6)\rightarrow 66F(3)F(4)= 6634\\ F(7)\rightarrow 77F(4)F(5)= 7745523\\ \)

Программа вывела \(7745523\), это - ответ на вопрос задачи.

Ответ: 7745523

Задание 45 #15216

Ниже на трёх языках программирования записан рекурсивный алгоритм F. \[\begin{array}{ | l | l | l |} \hline Python & C++ & Pascal \\ \hline def\; F(n): & void\; F(int\; n) & procedure\; F(n:\; integer); \\ \quad \; print(n) & \{ & \quad begin \\ \quad if\; n\; >\; 4: & \quad cout\; <<\; n; & \quad \; \; writeln(n); \\ \quad\quad F(n\; -\; 3) & \quad if\; (n\; >\; 4) & \quad \; \; \; if\; n\; >\; 4\; then \\ \quad\quad F(n-2) & \quad \{ & \quad\quad\quad begin \\ \quad \; \; \; & \quad\quad F(n-\; 3); & \quad\quad\quad \; \; \; F(n\; -\; 3); \\ & \quad\quad F(n\; -\; 2); & \quad\quad\quad \; \; \; F(n-2); \\ & \quad \} & end \\ & \} & end \\ \hline \end{array}\] Определите, что выведет программа при вызове функции F(8)? Цифры запишите в той последовательности, в которой они выводятся.

 


При вызове \(F(2)\) программа выведет 2, при вызове \(F(3)\) программа выведет 3, при вызове \(F(4)\) программа выведет 4. Пропишем весь алгоритм, начиная с \(F(5)\):
\( F(5)\rightarrow 5F(2)F(3)=523\\ F(6)\rightarrow 6F(3)F(4)= 634\\ F(7)\rightarrow 7F(4)F(5)= 74523\\ F(8)\rightarrow 8F(5)F(6)= 8523634\\ \)

Программа вывела \(8523634\), это - ответ на вопрос задачи.

Ответ: 8523634

Задание 46 #15217


Ниже на трёх языках программирования записан рекурсивный алгоритм F. \[\begin{array}{ | l | l | l |} \hline Python & C++ & Pascal \\ \hline def\; F(n): & void\; F(int\; n) & procedure\; F(n:\; integer); \\ \quad print(n) & \{ & \quad begin \\ \quad if\; n\; <\; 6: & \quad cout\; <<\; n\; <<\; endl; & \quad\quad writeln(n); \\ \quad\quad F(n\; +\; 2) & \quad if\; (n\; <\; 6)\; \{ & \quad if\; n\; <\; 6\; then \\ \quad\quad F(n\; +\; 4) & \quad\quad F(n\; +\; 2); & \quad \; begin \\ & \quad\quad F(n\; +\; 4); & \quad\quad \; \; \; F(n\; +\; 2); \\ & \quad \} & \quad\quad \; \; \; F(n\; +\; 4) \\ & \} & \quad \; end \\ & & end \\ \hline \end{array}\]

Определите, что выведет программа при вызове функции F(2)? Цифры запишите в той последовательности, в которой они выводятся.

 


При вызове \(F(n\geq6)\) программа выведет \(n\). Пропишем весь алгоритм, начиная с конца:
\( F(6)\rightarrow 6 = 6 \\ F(5)\rightarrow 5 F(7)F(9) = 579 \\ F(4)\rightarrow 4 F(6)F(8) = 468\\ F(3)\rightarrow 3 F(5) F(7) = 35797 \\ F(2)\rightarrow 2 F(4) F(6) = 24686 \\ \)

\(24686\) И будет ответом на вопрос задачи.

Ответ: 24686

Задание 47 #15218


Ниже на трёх языках программирования записан рекурсивный алгоритм F. \[\begin{array}{ | l | l | l |} \hline Python & C++ & Pascal \\ \hline def\; F(n): & void\; F(int\; n) & procedure\; F(n:\; integer); \\ \quad print(n) & \{ & \quad begin \\ \quad if\; n\; <\; 6: & \quad cout\; <<\; n\; <<\; endl; & \quad\quad writeln(n); \\ \quad\quad F(n\; +\; 1) & \quad if\; (n\; <\; 6)\; \{ & \quad if\; n\; <\; 6\; then \\ \quad\quad F(n\; *\; 2) & \quad\quad F(n\; +\; 1); & \quad \; begin \\ & \quad\quad F(n\; *\; 2); & \quad\quad \; \; \; F(n\; +\; 1); \\ & \quad \} & \quad\quad \; \; \; F(n\; *\; 2) \\ & \} & \quad \; end \\ & & end \\ \hline \end{array}\] Определите, что выведет программа при вызове функции F(3)? Цифры запишите в той последовательности, в которой они выводятся.

 


При вызове \(F(n\geq6)\) программа выведет \(n\). Пропишем весь алгоритм, начиная с конца:
\( F(6)\rightarrow 6 = 6 \\ F(5)\rightarrow 5F(6)F(10) = 5610 \\ F(4)\rightarrow 4 F(5)F(8) = 456108\\ F(3)\rightarrow 3 F(4) F(6) = 34561086 \\ \)

\(34561086\) И будет ответом на вопрос задачи.

Ответ: 34561086

Задание 48 #15219


Ниже на трёх языках программирования записан рекурсивный алгоритм F. \[\begin{array}{ | l | l | l |} \hline Python & C++ & Pascal \\ \hline def\; F(n): & void\; F(int\; n) & procedure\; F(n:\; integer); \\ \quad print(n) & \{ & \quad begin \\ \quad if\; n\; <\; 5: & \quad cout\; <<\; n\; <<\; endl; & \quad\quad writeln(n); \\ \quad\quad F(n\; +\; 3) & \quad if\; (n\; <\; 5)\; \{ & \quad if\; n\; <\; 5\; then \\ \quad\quad F(n\; *\; 2) & \quad\quad F(n\; +\; 3); & \quad \; begin \\ & \quad\quad F(n\; *\; 2); & \quad\quad \; \; \; F(n\; +\; 3); \\ & \quad \} & \quad\quad \; \; \; F(n\; *\; 2) \\ & \} & \quad \; end \\ & & end \\ \hline \end{array}\] Определите, что выведет программа при вызове функции F(1)? Цифры запишите в той последовательности, в которой они выводятся.

 


При вызове \(F(n\geq5)\) программа выведет \(n\). Пропишем весь алгоритм, начиная с конца:
\( F(5)\rightarrow 5 = 5 \\ F(4)\rightarrow 4F(7)F(8) = 478 \\ F(3)\rightarrow 3 F(6)F(6) = 366\\ F(2)\rightarrow 2 F(5) F(4) = 25478 \\ F(1)\rightarrow 1 F(4) F(2) = 147825478 \\ \)

\(147825478\) И будет ответом на вопрос задачи.

Ответ: 147825478