Тема 16. Рекурсивные алгоритмы

16.01 Одна функция

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

Ошибка.
Попробуйте повторить позже

Задача 1#5976

Ниже на трех языках программирования записана рекурсивная функция (процедура) F  .

|------------------------|-----------------|------------------|
|Pascal                  |Python           |C                 |
|procedure-F(n:-integer);|def-F(n):--------|void-F(int-n)-{---|
|                        |                 |                  |
|begin                    |  if n > 4:      |  if (n > 4) {    |
|  if n > 4 then          |     print("∗ " ,)|    printf("∗" ,); |
|  begin                 |     F(n − 2 )   |    F (n − 2);    |
|    writeln("∗" ,);     |     F(n − 3 )   |    F (n − 3);    |
|    F (n − 2);          |                 |  }               |
|                        |                 |                  |
|    F (n − 3);          |                 |}                 |
|  end;                  |                 |                  |
-end.----------------------------------------------------------

Сколько символов «∗ » будет напечатано на экране при выполнении вызова F (9)  ?

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

Данная рекурсивная функция останавливается, если n  принимает значение 4 или меньше. Следовательно, начнем выполнение функции, когда n = 5  . С помощью стрелочки → обозначим печать символа на экране.

При запуске F(5) появляется один символ «∗ ». Далее никакие функции не вызываются. F (5) → ∗ .

При запуске F (6)  появляется один символ «∗ ». Далее вызываются функцит F (6 − 2 =  4)  и F (6 − 3 = 3)  . Так как n > 4  , то функции F (4)  и F (3)  не вызываются.

F(5) →  ∗

F(6) →  ∗

При запуске F (7)  появляется один символ «∗ ». Далее вызываются функцит F (7 − 2 =  5)  и F (7 − 3 = 4)  . Так как n > 4  , то смотрим только на F (5)  и добавляем количество символов от данной функции к количеству символов от F(7)  .

F(5) →  ∗

F(6) →  ∗

F(7) →  ∗∗ .

Далее действуем по тому же принципу, возвращаясь к предыдущим значениям и добавляя количество символов к текущему:

F(8) →  ∗ ∗ ∗ . Т.к. 8 > 4  печатется один символ «∗ » , а также вызываются функции F (6 )  и F (5)  . Получаем 3 символа.

F(9) →  ∗ ∗ ∗∗ . Т.к. 9 > 4  печатется один символ «∗ », а также вызываются функции F (7)  и F (6)  . В итоге получаем 4 символа.

Ответ: 4

Специальные программы

Все специальные программы

Программа
лояльности v2.0

Приглашай друзей в Школково и получай вознаграждение до 10%!

Крути рулетку
и выигрывай призы!

Крути рулетку и покупай курсы со скидкой, которая привязывается к вашему аккаунту.

Бесплатное онлайн-обучение

Для школьников из приграничных территорий России, проживающих в ДНР, ЛНР, Херсонской, Запорожской, Белгородской, Курской, Брянской областях и Крыму.

Налоговые вычеты

Узнай, как получить налоговый вычет при оплате обучения в «Школково».

Специальное предложение
для учителей

Бесплатный доступ к любому курсу подготовки к ЕГЭ, ОГЭ и олимпиадам от «Школково». Мы с вами делаем общее и важное дело, а потому для нас очень значимо быть чем-то полезными для учителей по всей России!

Вернём деньги за курс
за твою сотку на ЕГЭ

Сдать экзамен на сотку и получить обратно деньги за подготовку теперь вполне реально!

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