В принципе, Вы правы, но какая разница как их считать. В обоих случаях целостность данных сохранится. Т.е. в первом случае, как у автора:
((n%2)*2 - 1) //Тут будет целостность данных и все будет правильно
В моем случае:
Sign = -Sign;
Sign *= -1; //Тут тоже будет целостность данных и все будет правильно

Знаки чередуются, никакого индикатора четности не надо - они чередуются, как я уже сказал - это стабильный и четкий процесс, не нужно бочку катить на это - там все такое в компьютере.
Без глюков, правда, никуда. Но это уже отдельная тема для разговора. Здесь же все будет работать стабильно и хорошо.

"Ну да, первый признак пионерского кода - по одной переменной на каждый чих." - на cyberforum.ru сходите, это оттуда я взял эту идею, не такие уж они и тупые люди. Придется расколоться.

В чем код-то пионерский? По 1 варианту процессор будет каждый раз делить и напрягаться - не рационально. Вот этот код как раз и есть пионерский. А мой код лучше - он как бы оптимизирован.

Просто делаешь число отрицательным и все. Ничего считать вообще не надо. Понятно?
"BTW, я что-то не подумал o pow(-1., n), так будет строго по математическому определению." - а это еще зачем? "-" можно вынести легко и делается это по школьным правилам математики. Строго это или не строго - пофиг на это.

Я уже, если честно, устал от Ваших комментариев по этой теме. Какая разница как считать минус или плюс там получается в общем члене. В любом случае процессоры сейчас мощные и они легко все почситают. Я предпочитаю свой способ вычисления минуса, каждый предпочитает свой. Я думаю не нужно этому вопросу уделять столько внимания, он(автор) как хочет так и сделает.
Тем более для учебных целей там вообще не обсуждается насколько загружен процессор. Это только у профессионалов обсуждается - высоком уровне и не для учебных целей, а для военных и других ресурсоемких приложений(графика, например).