Здравствуйте, Sinclair, Вы писали:
S>Ну, как я это понимаю, мы переписываем этот цикл на два:
S>S>T s = 0;
S>for(T k1 = 1; k1<K0; ++k1)
S>{
S> s += k1 / pow(2, k1);
S>}
S>for(T k2 = K0; ; ++k2)
S>{
S> s += 0; // т.к. k2/pow(2, k1) < epsilon для любого k2>=K0.
S>}
S>std::cout << s << std::endl;
S>
S>А после этого уже компилятор оптимизирует "прочь" цикл №2 как не имеющий побочных эффектов.
Если здесь — "k2/pow(2, k1)" — нет опечатки (действительно стоит k1, а не k2) — то это неверно (т.к. k1 фиксировано), если опечатка есть — то это тоже неверно, т.к. суммы 1/k (k = 1..inf) не существует. Как "оптимизировать" подобные циклы — есть куча статей в интернете, по теме "symbolical mathematics".