МОЛЮ ПОМОГИТЕ ПОЖАЛУЙСТА, ПАСКАЛЬ 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
