
Дан рекурсивный алгоритм: procedure F(n: integer); begin writeln(n); if n < 5 then begin
F(n+2); F(n*2) end end; Отметьте числа, которые будут выведены при вызове F(1). 1 2 3 4 5 6 8 10 14

Ответы на вопрос

Ответ:
1,2,3,4,5,6,8
Объяснение:
Что напечатается:
1
3
5
6
2
4
6
8
4
6
8
При вызове F(1) печатается 1. Дальше вызовется F(3)
Напечатается 3. Вызовется F(5)
Напечатается 5. F(7) не вызывается, т.к. 7>5
Теперь вызывается вторая функция для F(3), то есть F(6)
Печатается 6. Дальше вызывается вторая функция для F(1), то есть F(2)
Печатается 2. Вызывается первая функция для F(2), т.е. F(4).
Печатается 4. Вызывается первая функция для F(4), т.е. F(6).
Печатается 6. Вызывается вторая функция для F(4), т.е. F(8)
Печатается 8. Вызывается вторая функция для F(2), т.е. F(4)
Печатается 4. Вызываются первая и вторая функции F(6) и F(8)
Печатается 6
Печатается 8



Давайте разберемся, какие числа будут выведены при вызове F(1)
.
Когда мы вызываем F(1)
, происходит следующее:
- Выводится значение
n
, т.е., число 1. - Проверяется условие
n < 5
. В данном случае, 1 < 5 - условие выполняется. - Выполняется рекурсивный вызов
F(n+2)
иF(n*2)
.
Первый рекурсивный вызов: F(1+2) = F(3)
.
- Выводится значение
n
, т.е., число 3. - Проверяется условие
n < 5
. В данном случае, 3 < 5 - условие выполняется. - Выполняется рекурсивный вызов
F(n+2)
иF(n*2)
.
Первый рекурсивный вызов: F(3+2) = F(5)
.
- Выводится значение
n
, т.е., число 5. - Проверяется условие
n < 5
. В данном случае, 5 не меньше 5 - условие не выполняется.
Теперь вернемся к второму рекурсивному вызову: F(3*2) = F(6)
.
- Выводится значение
n
, т.е., число 6. - Проверяется условие
n < 5
. В данном случае, 6 не меньше 5 - условие не выполняется.
Теперь вернемся к вызову F(1)
.
Второй рекурсивный вызов: F(1*2) = F(2)
.
- Выводится значение
n
, т.е., число 2. - Проверяется условие
n < 5
. В данном случае, 2 < 5 - условие выполняется. - Выполняется рекурсивный вызов
F(n+2)
иF(n*2)
.
Первый рекурсивный вызов: F(2+2) = F(4)
.
- Выводится значение
n
, т.е., число 4. - Проверяется условие
n < 5
. В данном случае, 4 < 5 - условие выполняется. - Выполняется рекурсивный вызов
F(n+2)
иF(n*2)
.
Первый рекурсивный вызов: F(4+2) = F(6)
.
- Выводится значение
n
, т.е., число 6. - Проверяется условие
n < 5
. В данном случае, 6 не меньше 5 - условие не выполняется.
Теперь вернемся к второму рекурсивному вызову: F(4*2) = F(8)
.
- Выводится значение
n
, т.е., число 8. - Проверяется условие
n < 5
. В данном случае, 8 не меньше 5 - условие не выполняется.
Теперь мы вернулись к вызову F(2)
.
Завершаем выполнение процедуры F(2)
.
Теперь мы вернулись к вызову F(1)
.
Завершаем выполнение процедуры F(1)
.
Итак, числа, которые будут выведены при вызове F(1)
, это: 1 3 5 2 4 6 8.
Важно заметить, что число 14 не будет выведено, так как оно не попадает в диапазон вывода (больше 5).


Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili