
МОЛЮ ПОМОГИТЕ ПОЖАЛУЙСТА, ПАСКАЛЬ 50 баллов Что будет выведено на экран в результате работы
программы? Нарисуйте дерево рекурсивных вызовов. program k; uses crt; function F(n: integer): integer; begin if n < 5 then F := F(n + 1) + F(n + 2) + F(n + 3) else F := n; end; begin Writeln (F(2)); end.

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

насколько я поняла будет примерно так:
вызываем F(2)
Так как 2 < 5^, то
F(2) = F(3) + F(4) + F(5)
аналогично F(3) = F(4) + F(5) + F(6) и F(4) = F(5) + F(6) + F(7)
так как 5,6,7 не меньше 5, то F(5) = 5, F(6) = 6, F(7) = 7
Отсюда F(4) = 5 + 6 + 7 = 18, теперь зная F(4) вычислим F(3):
F(3) = 18 + 5 + 6 = 29
И наконец, зная F(3) найдем F(2):
F(2) = 29 + 18 + 5 = 52
Ответ: 52



Давайте разберем эту программу на Паскале и построим дерево рекурсивных вызовов.
Программа определяет функцию F(n: integer)
, которая рекурсивно вызывает саму себя. Если n
меньше 5, то функция возвращает сумму трех рекурсивных вызовов F(n + 1) + F(n + 2) + F(n + 3)
. Если n
больше или равно 5, то функция возвращает значение n
без рекурсии.
Теперь рассмотрим, как программа будет работать с аргументом n = 2
:
F(2)
вызываетF(3) + F(4) + F(5)
F(3)
вызываетF(4) + F(5) + F(6)
F(4)
вызываетF(5) + F(6) + F(7)
F(5)
больше или равно 5, поэтому возвращает 5.F(6)
больше или равно 5, поэтому возвращает 6.F(7)
больше или равно 5, поэтому возвращает 7.
Теперь мы можем начать вычислять значения в обратном порядке:
F(7)
возвращается как 7.F(6)
возвращается как 6.F(5)
возвращается как 5.
Теперь мы можем продолжить вычисления для F(4)
:
F(5)
возвращается как 5.F(6)
возвращается как 6.F(7)
возвращается как 7.
Суммируем эти значения:
F(4) = 5 + 6 + 7 = 18
Теперь мы можем продолжить вычисления для F(3)
:
F(4)
возвращается как 18.F(5)
возвращается как 5.F(6)
возвращается как 6.
Суммируем эти значения:
F(3) = 18 + 5 + 6 = 29
Наконец, мы можем продолжить вычисления для F(2)
:
F(3)
возвращается как 29.F(4)
возвращается как 18.F(5)
возвращается как 5.
Суммируем эти значения:
F(2) = 29 + 18 + 5 = 52
Итак, результатом работы программы при аргументе n = 2
будет вывод на экран числа 52.


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