Задание:
Дан рекурсивный алгоритм:
procedure F(n: integer);
begin
writeln(n);
if n < 7 then begin
F(n+2);
F(n+3)
end
end;
Решение:
* При n < 7, F(n) = n + F(n+2) + F(n+3) =>
* При n > 7, F(n) = n
* F(1) = 1 + F(1+2) + F(1+3) = 1 + F(3) + F(4)
F(2) = 2 + F(4) + F(5)
F(3) = 3 + F(5) + F(6)
F(4) = 4 + F(6) + F(7)
F(5) = 5 + F(7) + F(8)
F(6) = 6 + F(8) + F(9)
* Теперь в обратном порядке подставляем:
F(6) = 6 + F(8) + F(9) = 6 + 8 + 9 = 23
F(5) = 5 + F(7) + F(8) = 5 + 7 + 8 = 20
F(4) = 4 + F(6) + F(7) = 4 + 23 + 7 = 34
F(3) = 3 + F(5) + F(6) = 3 + 20 + 23 = 46
F(2) = 2 + F(4) + F(5) = 2 + 34 + 20 = 56
F(1) = 1 + F(3) + F(4) = 1 + 46 + 34 = 1 + 80 = 81
Ответ: 81