Записаны 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)?

Вот полная трассировка вызовов при вычислении 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 - это ответ.

Оцени ответ
Подпишись на наш канал в телеграм. Там мы даём ещё больше полезной информации для школьников!

Загрузить картинку