Re: Я не тормоз...
От: Анатолий Широков СССР  
Дата: 17.06.05 16:15
Оценка: 10 (1)
MS>Допустим, что он выполняется 2 раза. Надо написать код, дающий результат, эквивалентный выполнению приведенного кода дважды, но тоже в три выражения, а не в шесть. На самом деле все сложнее. Вместо 2 может быть некое K, необязательно целое. Может быть как меньше единицы, так и больше. И может быть отрицательным, что эквивалентно откату назад.

По рекурентным соотношениям можно вывести все что угодно:
fi+1   = fi + dfi;
dfi+1  = dfi + ddfi;
ddfi+1 = ddfi + dddfi;
dddfi+1 = dddfi;


Пусть K = 3, тогда

f1   = f0 + df0;
df1  = df0 + ddf0;
ddf1 = ddf0 + dddf0;
dddf1 = dddf0;

f2   = f1 + df1 = f0 + df0 + df0 + ddf0 = f0 + 2df0 + ddf0;
df2  = df1 + ddf1 = df0 + ddf0 + ddf0 + dddf0 = df0 + 2ddf0 + dddf0;
ddf2 = ddf1 + dddf1 = ddf0 + dddf0 + dddf0 = ddf0 + 2dddf0;
dddf2 = dddf0;

f3   = f2 + df2 = f0 + 2df0 + ddf0 + df0 + 2ddf0 + dddf0 = f0 +  3df0 + 3ddf0 + dddf0;
df3  = df2 + ddf2 = df0 + 2ddf0 + dddf0 + ddf0 + 2dddf0 = df0 + 3ddf0 + 3dddf0;
ddf3 = ddf2 + dddf2 = ddf0 + 2dddf0 + dddf0 = ddf0 + 3dddf0;
dddf3 = dddf0;


Для отрицательных K:

fi+1   = fi + dfi;    ->  fi = fi+1 - dfi = fi+1 - dfi+1 + ddfi = fi+1 - dfi+1 + ddfi+1 - dddfi+1;
dfi+1  = dfi + ddfi;  ->  dfi = dfi+1 - ddfi = ...;
ddfi+1 = ddfi + dddfi; -> ddfi = ddfi+1 - dddfi = ...;
dddfi+1 = dddfi;       -> dddfi = dddfi+1 = ...;


Правда, на обобщение чего-то голова уже не варит.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.