Calcul récursive de la valeur approchée de sinus en C

Fonction récursive Approx_sin(x,n)=x - x^3/3! + x^5/5! - x^7/7! + ... (-1)^n * x^(2*n-1) / (2*n-1)! qui calcule la valeur approchée de sinus d'ordre n.
Calcul récursive de la valeur approchée de sinus d'ordre n

#include<stdio.h>
#include<stdlib.h>

unsigned long fact_recursive (unsigned short nombre)
{
if (nombre == 0)
return 1;
else
return nombre * fact_recursive(nombre - 1);
}

unsigned int puiss(long int x, int n)
{
if(n == 0)
return 1;
if(n == 1)
return x;
int x2 = puiss(x,n/2);
if(n%2 == 0)
return x2 * x2;
return x2 * x2 * x;
}

float Approx_sin(float x, int n)
{
float fraction = (float)puiss(x,2*n-1) / (float)fact_recursive(2*n-1);
//Affichage
if(n%2==1)
printf("n = %d --> %f\n",n,fraction);
else
printf("n = %d --> -%f\n",n,fraction);

//Condition terminale si n=1 alors Approx_sin=x;
if(n==1)
{
return x;
}
else{
//si n est impair le signe est positif
if(n%2==1)
return calcul_formule(x,n-1)+fraction;
//si n est impair le signe est négatif
else
return calcul_formule(x,n-1)-fraction;
}
}

int main(int argc, char *argv[])
{
int n;
float x;
printf("Enter la valeur de x : ");
scanf("%d",&x);
printf("Enter la valeur de n : ");
scanf("%d",&n);
//calcul de la formule
printf("Approx_sin(%f, %d ) = %f\n",x,Approx_sin(x,n) );
system("pause");
}