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

Ниже на трёх языках программирования записан рекурсивный алгоритм 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\) знаков. Это - ответ на вопрос задачи.
Ниже на трех языках программирования записана рекурсивная функция (процедура) \(F\). \[\begin{array}{| l | l | l |} \hline \textbf{Pascal} & \textbf{Python} &\textbf{C}\\ \hline \textit{procedure F(n: integer);} & \textit{def F(n):} & \textit{void F(int n)\{} \\ \textit{begin} &\quad \textit{if n > $2$:} & \quad \textit{if (n > $2$)\{}\\ \quad \textit{if n > $2$ then} & \quad \quad F(n - 1) & \quad \quad F(n - 1);\\ \quad begin & \quad \quad F(n // 2) &\quad \quad F(n / 2); \\ \quad \quad F(n - 1); & \quad \quad print(n) & \quad \quad \textit{printf("\%d"\,, n);}\\ \quad \quad \textit{F(n div $2$);} & & \quad \textit{\}}\\ \quad \quad writeln(n);& & \textit{\}}\\ \quad end;& & \\ end. & & \\ \hline \end{array}\]
Что выведет программа при вызове \(F(4)\)? В ответе запишите последовательность выведенных цифр слитно (без пробелов).
Данная рекурсивная функция останавливается, если \(n\) принимает значение 2 или меньше. Следовательно, начнем выполнение функции, когда \(n = 3\).
С помощью стрелочки \(\to\) обозначим печать символа на экране.Рассмотрим последовательно, что будет выводится на экран, начиная с \(F(3)\):
\(F(3) \to \)
\(\to F(2) \to \circ\) (От данного значения нет вывода числа на экран);
\(\to F(1) \to \circ\) (От данного значения нет вывода числа на экран);
\(\to n \to 3\) (Выводится текущее значение \(n\)).
\(F(4) \to \)
\(\to F(3) \to 3\) (Выводится число, которое было получено от \(F(3)\) в предыдущем шаге);
\(\to F(2) \to \circ\) (От данного значения нет вывода числа на экран);
\(\to n \to 4\) (Выводится текущее значение \(n\)).
\(F(5) \to \)
\(\to F(4) \to 34\) (Выводится число, которое было получено от \(F(4)\) в предыдущем шаге);
\(\to F(2) \to \circ\) (От данного значения нет вывода числа на экран);
\(\to n \to 5\) (Выводится текущее значение \(n\)).
\(F(6) \to \)
\(\to F(5) \to 345\) (Выводится число, которое было получено от \(F(5)\) в предыдущем шаге);
\(\to F(3) \to 3\) (Выводится число, которое было получено от \(F(3)\));
\(\to n \to 6\) (Выводится текущее значение \(n\)).
Следовательно, итоговая последовательность \(\to 34536\).
Ниже на трёх языках программирования записан рекурсивный алгоритм 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\), это - ответ на вопрос задачи.
Ниже на трёх языках программирования записан рекурсивный алгоритм 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 F(n-2) & \quad \{ & \quad\quad\quad begin \\ \quad\quad print(n) & \quad\quad F(n-\; 3); & \quad\quad\quad \; \; \; F(n\; -\; 3); \\ \quad\quad F(n-1) & \quad\quad F(n\; -\; 2); & \quad\quad\quad \; \; \; F(n-2); \\ \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(-1)\), \(F(0)\) и \(F(1)\) программа ничего не выведет. Пропишем весь алгоритм, начиная с \(F(2)\):
\(
F(2)\rightarrow F(-1)F(0)2F(1) = 2\\
F(3)\rightarrow F(0)F(1)3F(2)= 32\\
F(4)\rightarrow F(1)F(2)4F(3) = 2432\\
F(5)\rightarrow F(2)F(3)5F(4)= 23252432\\
\)
Программа вывела \(23252432\), это - ответ на вопрос задачи.
Ниже на трёх языках программирования записан рекурсивный алгоритм 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 F(n-2) & \quad \{ & \quad\quad\quad begin \\ \quad\quad F(n-1) & \quad\quad F(n-\; 3); & \quad\quad\quad \; \; \; F(n\; -\; 3); \\ \quad\quad print(n) & \quad\quad F(n\; -\; 2); & \quad\quad\quad \; \; \; F(n-2); \\ \quad \; \; \; & \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(0)\) и \(F(1)\) программа ничего не выведет. Пропишем весь алгоритм, начиная с \(F(2)\):
\(
F(2)\rightarrow F(-1)F(0)F(1)2 = 2\\
F(3)\rightarrow F(0)F(1)F(2)3= 23\\
F(4)\rightarrow F(1)F(2)F(3)4 = 2234\\
F(5)\rightarrow F(2)F(3)F(4)5= 22322345\\
\)
Программа вывела \(22322345\), это - ответ на вопрос задачи.
Ниже на трёх языках программирования записан рекурсивный алгоритм 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 F(n-2) & \quad \{ & \quad\quad\quad begin \\ \quad\quad print(n) & \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 cout\; <<\; n; & \quad\quad\quad \; \; writeln(n); \\ & \quad \} & end \\ & \} & end \\ \hline \end{array}\]
Определите, что выведет программа при вызове функции F(6)? Цифры запишите в той последовательности, в которой они выводятся.
При вызове \(F(-1)\), \(F(0)\) и \(F(1)\) программа ничего не выведет. Пропишем весь алгоритм, начиная с \(F(2)\):
\(
F(2)\rightarrow F(-1)F(0)2 = 2\\
F(3)\rightarrow F(0)F(1)3= 3\\
F(4)\rightarrow F(1)F(2)4 = 24\\
F(5)\rightarrow F(2)F(3)5=235\\
F(6)\rightarrow F(3)F(4)6= 3246\\
\)
Программа вывела \(3246\), это - ответ на вопрос задачи.
Ниже на трёх языках программирования записан рекурсивный алгоритм 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\quad cout\; <<\; n; & \quad\quad\quad \; \; writeln(n); \\ & \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 F(-1)2F(0) = 2\\
F(3)\rightarrow F(0)3F(1)= 3\\
F(4)\rightarrow F(1)4F(2) = 42\\
F(5)\rightarrow F(2)5F(3)=253\\
F(6)\rightarrow F(3)6F(4)= 3642\\
F(7)\rightarrow F(4)7F(5)= 427253\\
\)
Программа вывела \(427253\), это - ответ на вопрос задачи.