Задания
Версия для печати и копирования в MS Word
Тип Д16 № 11307
i

Ниже за­пи­са­ны две ре­кур­сив­ные функ­ции, F и G:

function F(n: integer): integer;

 begin

  if (n > 2) then F := F(n - 1) + G(n - 1) + F(n-2)

 else

F := n;

 end;

function G(n: integer): integer;

 begin

  if (n > 2) then G := G(n - 1) + F(n - 1) + G(n-2)

 else

G := n;

 end;

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

Спрятать решение

Ре­ше­ние.

Про­мо­де­ли­ру­ем ра­бо­ту про­грам­мы: F(5) = F(4) + G(4) + F(3).

F(4) = F(3) + G(3) + F(2)

F(3) = F(2) + G(2) + F(1)

F(2) = 2

F(1) = 1

 

G(4) = G(3) + F(3) + G(2)

G(3) = G(2) + F(2) + G(1)

G(2) = 2

G(1) = 1

 

Те­перь можно под­счи­тать G(3) и F(3): G(3) = 1 + 2 + 2 = 5; F(3) = 2 + 2 + 1 = 5.

Найдём зна­че­ние G(4) и F(4): G(4) = 5 + 5 + 2 = 12; F(4) = 5 + 5 + 2 = 12.

Таким об­ра­зом, F(5) = 12 + 12 + 5 = 29.

 

Ответ: 29.

Источник: ЕГЭ 16.06.2016 по ин­фор­ма­ти­ке. Ос­нов­ная волна.
Раздел кодификатора ФИПИ: 1.5.3 Ин­дук­тив­ное опре­де­ле­ние объ­ек­тов