/ Материалы / Информатика и ИКТ / Дан рекурсивный алгоритм.. F(n+2) F(n+3)..

Дан рекурсивный алгоритм.. F(n+2) F(n+3)..

Задание:

Дан рекурсивный алгоритм:


procedure F(n: integer);
begin
 writeln(n);
 if n < 7 then begin
   F(n+2);
   F(n+3)
 end
end;
 

Найдите сумму чисел, которые будут выведены при вызове F(1).

 

Решение:

* При 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


Похожие материалы

Поделитесь в социальных сетях

Наверх