Олимпиадные задачи по программированию. Лучшие решения. Часть 1. Ускова О.Ф - 40 стр.

UptoLike

теперь нам надо вычислить значения F для 3 аргументов, но на
самом деле 2 из
них (аргументов) всегда совпадут! То есть кол-во вычислений
функции на каждом шаге не увеличивается.
Пример:
F(26) = F(13) = F(6)+F(7) = F(3)+F(3)+F(4) = 2F(3)+F(4) =
=2(F(1)+F(2))+F(2) = 2F(1)+3F(2) = 5F(1) = 5
3. Программная реализация
Program func; {Автор: Гладышев О.В.}
var
c, {Текущий четный аргумент}
nc, {Текущий нечетный аргумнт}
kc, {Коэффициент при четном аргументе }
knc, {Коэффициент при нечетном аргументе }
n:LongInt;
{В переменной c всегда должен быть четный аргумент, а в nc -
нечетный. Эта процедура меняет местами значения переменных c и
nc, если это необходимо}
Procedure Correct;
var Temp:LongInt;
Begin
if odd(c) then
Begin
Temp:=c;
c:=nc;
nc:=Temp;
Temp:=kc;
kc:=knc;