Записаны 2 рекурсивные функции, F и G. function F(n:integer):integer; begin if n>2 then...

0 голосов
239 просмотров

Записаны 2 рекурсивные функции, F и G.

function F(n:integer):integer;
begin
if n>2 then
F:=F(n-1)+G(n-2)
else
F:=n;
end;
function G(n:integer):integer;
begin
if n>2 then
G:=G(n-1)+F(n-2)
else
G:=n+1;
end;

Чему будет равно значение, вычисленное при выполнении вызова F(6)?


Информатика (26 баллов) | 239 просмотров
Дан 1 ответ
0 голосов
Правильный ответ

Вот полная трассировка вызовов при вычислении F(6):

Вызов F(6)
Вызов F(5)
Вызов F(4)
Вызов F(3)
Вызов F(2)
Выход из F со значением 2
Вызов G(1)
Выход из G со значением 2
Выход из F со значением 4
Вызов G(2)
Выход из G со значением 3
Выход из F со значением 7
Вызов G(3)
Вызов G(2)
Выход из G со значением 3
Вызов F(1)
Выход из F со значением 1
Выход из G со значением 4
Выход из F со значением 11
Вызов G(4)
Вызов G(3)
Вызов G(2)
Выход из G со значением 3
Вызов F(1)
Выход из F со значением 1
Выход из G со значением 4
Вызов F(2)
Выход из F со значением 2
Выход из G со значением 6
Выход из F со значением 17
17 - это ответ.

(142k баллов)