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

16. Рекурсия

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

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

Задание 15 #15227


Ниже на трёх языках программирования записан рекурсивный алгоритм 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\; <\; 10: & \{ & \quad begin \\ \quad\quad F(n\; +\; 6) & \quad if\; (n\; <\; \; 10)\; \{ & \quad if\; n\; <\; 10\; then \\ \quad\quad F(n\; +\; 3) & \quad\quad F(n\; +\; 6); & \quad \; begin \\ \quad\quad print(n) & \quad\quad F(n\; +\; 3); & \quad\quad \; \; \; F(n\; +\; 6); \\ & \quad cout\; <<\; n\; <<\; endl; & \quad\quad \; \; \; F(n\; +\; 3) \\ & \quad \} & \quad\quad writeln(n); \\ & \} & \quad \; end \\ & & end \\ \hline \end{array}\] Определите, что выведет программа при вызове функции F(1)? Цифры запишите в той последовательности, в которой они выводятся.

 


При вызове \(F(n\geq10)\) программа выведет \(NOTHING\). Пропишем весь алгоритм, начиная с конца:
\( F(10)\rightarrow NOTHING\\ F(9)\rightarrow F(15)F(12)9 = 9\\ F(8)\rightarrow F(14)F(11)8 = 8 \\ F(7)\rightarrow F(13) F(10)7= 7 \\ F(6)\rightarrow F(12)F(9)6= 96 \\ F(5)\rightarrow F(11) F(8) 5= 85\\ F(4)\rightarrow F(10)F(7) 4= 74 \\ F(3)\rightarrow F(9)F(6) 3= 9963 \\ F(2)\rightarrow F(8)F(5) 2= 8852 \\ F(1)\rightarrow F(7)F(4) 1= 7741 \\ \)

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

Ответ: 7741

Задание 16 #15226


Ниже на трёх языках программирования записан рекурсивный алгоритм 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\; <\; 9: & \{ & \quad begin \\ \quad\quad F(n\; +\; 5) & \quad if\; (n\; <\; \; 9)\; \{ & \quad if\; n\; <\; 9\; then \\ \quad\quad F(n\; +\; 2) & \quad\quad F(n\; +\; 5); & \quad \; begin \\ \quad\quad print(n) & \quad\quad F(n\; +\; 2); & \quad\quad \; \; \; F(n\; +\; 5); \\ & \quad cout\; <<\; n\; <<\; endl; & \quad\quad \; \; \; F(n\; +\; 2) \\ & \quad \} & \quad\quad writeln(n); \\ & \} & \quad \; end \\ & & end \\ \hline \end{array}\] Определите сумму цифр при вызове функции F(1)?

 


При вызове \(F(n\geq9)\) программа выведет \(NOTHING\). Пропишем весь алгоритм, начиная с конца:
\( F(9)\rightarrow NOTHING\\ F(8)\rightarrow F(13)F(10)8 = 8 \\ F(7)\rightarrow F(12) F(9)7= 7 \\ F(6)\rightarrow F(11)F(8)6= 86 \\ F(5)\rightarrow F(10) F(7) 5= 75\\ F(4)\rightarrow F(9)F(6) 4= 864 \\ F(3)\rightarrow F(8)F(5) 3= 8753 \\ F(2)\rightarrow F(7)F(4) 2= 78642 \\ F(1)\rightarrow F(6)F(3) 1= 8687531 \\ \)

\(8+6+8+7+5+3+1=38\) и будет ответом на вопрос задачи.

Ответ: 38

Задание 17 #15225


Ниже на трёх языках программирования записан рекурсивный алгоритм 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\; <\; 6: & \{ & \quad begin \\ \quad\quad F(n\; +\; 1) & \quad if\; (n\; <\; \; 6)\; \{ & \quad if\; n\; <\; 6\; then \\ \quad\quad print(n) & \quad\quad F(n\; +\; 1); & \quad \; begin \\ \quad\quad F(n\; +\; 2) & \quad cout\; <<\; n\; <<\; endl; & \quad\quad \; \; \; F(n\; +\; 1); \\ & \quad\quad F(n\; +\; 2); & \quad\quad writeln(n); \\ & \quad \} & \quad\quad \; \; \; F(n\; +\; 2) \\ & \} & \quad \; end \\ & & end \\ \hline \end{array}\] Определите сумму цифр при вызове функции F(2)?

 


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

\(5+4+3+5+2+5+4=28\) и будет ответом на вопрос задачи.

Ответ: 28

Задание 18 #15224


Ниже на трёх языках программирования записан рекурсивный алгоритм 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\; <\; 6: & \{ & \quad begin \\ \quad\quad print(n) & \quad if\; (n\; <\; \; 6)\; \{ & \quad if\; n\; <\; 6\; then \\ \quad\quad F(n\; +\; 3) & \quad cout\; <<\; n\; <<\; endl; & \quad \; begin \\ \quad\quad F(n\; +\; 2) & \quad\quad F(n\; +\; 3); & \quad\quad writeln(n); \\ & \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\geq6)\) программа выведет \(NOTHING\). Пропишем весь алгоритм, начиная с конца:
\( F(6)\rightarrow NOTHING\\ F(5)\rightarrow 5 F(8)F(7) = 5 \\ F(4)\rightarrow 4 F(7)F(6) = 4 \\ F(3)\rightarrow 3 F(6) F(5) = 35 \\ F(2)\rightarrow 2 F(5) F(4) = 254 \\ F(1)\rightarrow 1 F(4) F(3) = 1435\\ \)

\(1+4+3+5=13\) и будет ответом на вопрос задачи.

Ответ: 13

Задание 19 #15223


Ниже на трёх языках программирования записан рекурсивный алгоритм 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\; <\; 6: & \{ & \quad begin \\ \quad\quad print(n) & \quad if\; (n\; <\; \; 6)\; \{ & \quad if\; n\; <\; 6\; then \\ \quad\quad F(n\; +\; 2) & \quad cout\; <<\; n\; <<\; endl; & \quad \; begin \\ \quad\quad F(n\; +\; 2) & \quad\quad F(n\; +\; 2); & \quad\quad writeln(n); \\ & \quad\quad F(n\; +\; 2); & \quad\quad \; \; \; F(n\; +\; 2); \\ & \quad \} & \quad\quad \; \; \; F(n\; +\; 2) \\ & \} & \quad \; end \\ & & end \\ \hline \end{array}\] Определите сумму цифр при вызове функции F(1)?

 


При вызове \(F(n\geq6)\) программа выведет \(NOTHING\). Пропишем весь алгоритм, начиная с конца:
\( F(6)\rightarrow NOTHING\\ F(5)\rightarrow 5 F(7)F(7) = 5 \\ F(4)\rightarrow 4 F(6)F(6) = 4 \\ F(3)\rightarrow 3 F(5) F(5) = 355 \\ F(2)\rightarrow 2 F(4) F(4) = 244 \\ F(1)\rightarrow 1 F(3) F(3) = 1355355\\ \)

\(1+3+5+5+3+5+5=27\) и будет ответом на вопрос задачи.

Ответ: 27

Задание 20 #15222


Ниже на трёх языках программирования записан рекурсивный алгоритм 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\; <\; 7: & \{ & \quad begin \\ \quad\quad print(n) & \quad if\; (n\; <\; \; 7)\; \{ & \quad if\; n\; <\; 7\; then \\ \quad\quad F(n\; *\; 2) & \quad cout\; <<\; n\; <<\; endl; & \quad \; begin \\ \quad\quad F(n\; +\; 2) & \quad\quad F(n\; *\; 2); & \quad\quad writeln(n); \\ & \quad\quad F(n\; +\; 2); & \quad\quad \; \; \; F(n\; *\; 2); \\ & \quad \} & \quad\quad \; \; \; F(n\; +\; 2) \\ & \} & \quad \; end \\ & & end \\ \hline \end{array}\] Определите сумму цифр при вызове функции F(1)?

 


При вызове \(F(n\geq7)\) программа выведет \(NOTHING\). Пропишем весь алгоритм, начиная с конца:
\( F(7)\rightarrow NOTHING\\ F(6)\rightarrow 6 F(12)F(8) = 6 \\ F(5)\rightarrow 5 F(10)F(7) = 5 \\ F(4)\rightarrow 4 F(8) F(6) = 46 \\ F(3)\rightarrow 3 F(6) F(5) = 365 \\ F(2)\rightarrow 2 F(4) F(4) = 24646\\ F(1)\rightarrow 1 F(2) F(3) = 124646365 \\ \)

\(1+2+4+6+4+6+3+6+5=37\) и будет ответом на вопрос задачи.

Ответ: 37

Задание 21 #15221


Ниже на трёх языках программирования записан рекурсивный алгоритм 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\; <\; 7: & \quad cout\; <<\; n\; <<\; endl; & \quad\quad writeln(n); \\ \quad\quad F(n\; *\; 2) & \quad if\; (n\; <\; \; 7)\; \{ & \quad if\; n\; <\; 7\; then \\ \quad\quad F(n\; +\; 2) & \quad\quad F(n\; *\; 2); & \quad \; begin \\ & \quad\quad F(n\; +\; 2); & \quad\quad \; \; \; F(n\; *\; 2); \\ & \quad \} & \quad\quad \; \; \; F(n\; +\; 2) \\ & \} & \quad \; end \\ & & end \\ \hline \end{array}\] Определите, что выведет программа при вызове функции F(2)? Цифры запишите в той последовательности, в которой они выводятся.

 


При вызове \(F(n\geq7)\) программа выведет \(n\). Пропишем весь алгоритм, начиная с конца:
\( F(7)\rightarrow 7 = 7 \\ F(6)\rightarrow 6 F(12)F(8) = 6128 \\ F(5)\rightarrow 5 F(10)F(7) = 5107 \\ F(4)\rightarrow 4 F(8) F(6) = 486128 \\ F(3)\rightarrow 3 F(6) F(5) = 361285107 \\ F(2)\rightarrow 2 F(4) F(4) = 2486128486128\\ \)

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

Ответ: 2486128486128