Ниже записаны две рекурсивные функции, F и G: function F(n: integer): integer; begin if n...

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

Ниже записаны две рекурсивные функции, F и G:
function F(n: integer): integer;
begin
if n > 2 then
F := F(n - 1) + G(n - 2)
else
F := 1;
end;
function G(n: integer): integer;
begin
if n > 2 then
G := G(n - 1) + F(n - 2)
else
G := 1;
end;
Чему будет равно значение, вычисленное при выполнении вызова F(7)?


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

Чтобы заработал этот код надо добавить первой строкой:
function G(n:integer):integer;forward;
Так как в функции F присутствует вызов функции G, которая описана далее в программе.


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

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

begin
  writeln(F(7));
end.

Ответ: 13


(13.9k баллов)