Предмет: Информатика, автор: afoninatatyana7

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

Ответы

Автор ответа: anyaFamova
1

насколько я поняла будет примерно так:

вызываем 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


afoninatatyana7: а дерево, не сможешь?
anyaFamova: так я его по сути словесно описала: просто из F(2) рисуешь три линии в F(3) F(4) и F(5) и так далее
afoninatatyana7: можешь нарисовать, а то я вообще не шарю
Похожие вопросы