Задать вопрос
19 февраля, 21:19

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

+5
Ответы (1)
  1. 19 февраля, 22:40
    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 - это ответ.
Знаете ответ на вопрос?
Не уверены в ответе?
Правильный ответ на вопрос 👍 «Записаны 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 ...» по предмету 📗 Информатика. Развернутая система поиска нашего сайта обязательно приведёт вас к нужной информации. Как вариант - оцените ответы на похожие вопросы. Но если вдруг и это не помогло - задавайте свой вопрос знающим оппонентам, которые быстро дадут на него ответ!
Искать готовые ответы