Просмотр задания
Рекурсия
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)?
Гость
29 декабря 2015
Ответы (1)
Информатик БУ # 29 декабря 2015 в 11:33 0
Так красивее

Код PASCAL:
  1. function F(n: integer): integer;
  2. begin
  3. if n > 2 then
  4. F := F(n - 1) + G(n - 2)
  5. else
  6. F := 1;
  7. end;
  8.  
  9. function G(n: integer): integer;
  10. begin
  11. if n > 2 then
  12. G := G(n - 1) + F(n - 2)
  13. else
  14. G := 1;
  15. end;
  16.  
Чтобы найти F(7), мы должны узнать F(6) G(5), чтобы найти F(6), мы должны знать F(5) и G(4) и т.д.
Определим все значения функций F и G от 1 до 7

Если n <= 2, то F = 1 и G = 1, то есть
F(1)=1
F(2)=1
G(1)=1
G(2)=1

F(3) = F(2) + G(1) = 1 + 1 = 2
G(3) = G(2) + F(1) = 1 + 1 = 2
F(4) = F(3) + G(2) = 2 + 1 = 3
G(4) = G(3) + F(2) = 2 + 1 = 3
F(5) = F(4) + G(3) = 3 + 2 = 5
G(5) = G(4) + F(3) = 3 + 2 = 5
F(6) = F(5) + G(4) = 5 + 3 = 8
G(6) = G(5) + F(4) = 5 + 3 = 8

F(7) = F(6) + G(5) = 8 + 5 = 13
Перевести число из в Результат: 510 = 1012