16. Рекурсия

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

Вспоминай формулы по каждой теме
Решай новые задачи каждый день
Вдумчиво разбирай решения
ШКОЛКОВО.
Готовиться с нами - ЛЕГКО!
Подтемы раздела 16. Рекурсия:

Это старая версия каталога задач

Нажмите для перехода на новую версию

Решаем задачи
Задание 8 #15203

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

Определите сумму цифр при вызове функции F(5)?

 

Показать решение

При вызове \(F(0)\) и \(F(1)\) программа ничего не выведет. Пропишем весь алгоритм, начиная с \(F(2)\):
\( F(2)\rightarrow 2 F(1) F(0) = 2\\ F(3)\rightarrow 3 F(2) F(1)= 32\\ F(4)\rightarrow 4 F(3) F(2)= 4322\\ F(5)\rightarrow 5 F(4) F(3) = 5432232\\ \)

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

Ответ: 21
Задание 9 #15204

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

Определите сумму цифр при вызове функции F(5)?

 

Показать решение

При вызове \(F(1)\) программа ничего не выведет. Пропишем весь алгоритм, начиная с \(F(2)\):
\( F(2)\rightarrow 2 F(1) 2 = 22\\ F(3)\rightarrow 3 F(2) 3= 3223\\ F(4)\rightarrow 4 F(3) 4= 432234\\ F(5)\rightarrow 5 F(4) 5 =54322345\\ \)

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

Ответ: 28
Задание 10 #15205

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

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

 

Показать решение

При вызове \(F(0)\) и \(F(1)\) программа ничего не выведет. Пропишем весь алгоритм, начиная с \(F(2)\):
\( F(2)\rightarrow 2 F(0) 2 = 22\\ F(3)\rightarrow 3 F(1) 3= 33\\ F(4)\rightarrow 4 F(2) 4= 4224\\ F(5)\rightarrow 5 F(3) 5 =5335\\ F(6)\rightarrow 6 F(4) 6 =642246\\ \)

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

Ответ: 642246
Задание 11 #15206

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

Определите сколько знаков выведет программа при вызове функции F(5)?

 

Показать решение

При вызове \(F(0)\) программа выведет 0. Пропишем весь алгоритм, начиная с \(F(1)\):
\( F(1)\rightarrow 11F(0) = 110\\ F(2)\rightarrow 22 F(1)= 22110\\ F(3)\rightarrow 33F(2) = 3322110\\ F(4)\rightarrow 44 F(3) =443322110\\ F(5)\rightarrow 55 F(4) =55443322110\\ \)

Всего программа вывела \(11\) знаков.Это - ответ на вопрос задачи.

Ответ: 11
Задание 12 #15207

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

Определите сколько знаков выведет программа при вызове функции \(F(6)\)?

 

Показать решение

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

Всего программа вывела \(7\) знаков. Это - ответ на вопрос задачи.

Ответ: 7
Задание 13 #15208

Ниже на трёх языках программирования записан рекурсивный алгоритм 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\; >\; 0: & \{ & \quad begin \\ \quad\quad print(n) & \quad if\; (n\; >\; 0) & \quad\quad if\; n\; >\; 0\; 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 F(n-1) & \quad\quad F(n-\; 3); & \quad\quad\quad \; \; \; F(n\; -\; 3); \\ \quad \; \; \; & \quad\quad F(n\; -\; 2); & \quad\quad\quad \; \; \; F(n-2); \\ & \quad\quad F(n-1); & \quad\quad\quad \; \; \; F(n-1); \\ & \quad \} & end \\ & \} & end \\ \hline \end{array}\]

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

 

Показать решение

При вызове \(F(0)\), \(F(-1)\) и \(F(-2)\) программа ничего не выведет. Пропишем весь алгоритм, начиная с \(F(1)\):
\( F(1)\rightarrow 1F(-2)F(-1)F(0) = 1\\ F(2)\rightarrow 2F(-1)F(0)F(1)= 21\\ F(3)\rightarrow 3F(0)F(1)F(2) = 3121\\ F(4)\rightarrow 4F(1)F(2)F(3)= 41213121\\ \)

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

Ответ: 41213121
Задание 14 #15209

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

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

 

Показать решение

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

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

Ответ: 25324232
1

2

3

...

7
Рулетка
Вы можете получить скидку в рулетке!