Eu não tenho trabalhado em C (Sei quase nada!). Mas fiz minha versão em PHP (Também não sei muito). Não sei se é o algorítimo que se deseja, mas funciona!
Fica a teu cargo traduzir o código que fiz para C e analisar se não haveria solução melhor.
OBS: "echo" serve para escrever na tela. As variáveis em php iniciam com cifrão "$". O echo que está dentro do while mostra as parciais da soma.
//Números que deverão ser lidos
$n = 22;
$x = 2;
//Definição de variáveis
$s = 0;
$i = 1;
$fat = 1; //fatorial começa em 1!
$fatAnterior = 1;
while ($i<=$n){
if ($i%2 == 0) { // Se o resto for par, SOMA
$s += (pow($x,$i+1)/$fat);
} else { // Se for ímpar, SUBTRAI
$s -= (pow($x,$i+1)/$fat);
}
if ($fat == 1)
{$fatAnterior = $fat; $fat = 2;} //Se tava em 1! passa para 2!
elseif ($fat == 2 && $fat>$fatAnterior)
{$fatAnterior = $fat; $fat = 6;} //Crescendo... Se tava em 2! passa para 3!
elseif ($fat == 2 && $fat<$fatAnterior)
{$fatAnterior = $fat; $fat = 1;} //Decrescendo... Se tava em 2! passa para 1!
elseif ($fat == 6 && $fat>$fatAnterior)
{$fatAnterior = $fat; $fat = 24;} //Crescendo... Se tava em 3! passa para 4!
elseif ($fat == 6 && $fat<$fatAnterior)
{$fatAnterior = $fat; $fat = 2;} //Decrescendo... Se tava em 3! passa para 2!
elseif ($fat == 24)
{$fatAnterior = $fat; $fat = 6;} //Se tava em 4! passa para 3!
echo "<br>n=$i || FatAnterior = $fatAnterior; Fat = $fat; || Soma = $s<br>";
$i++;
}
echo "<br>Soma = $s";
Bons estudos!!! Conheça, contribua e divulgue o projeto da "Wikipédia dos Mapas": OpenStreetMap = www.osm.org.