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");
}

Commentaires (0)

Connectez-vous pour commenter

Rejoignez la discussion et partagez vos connaissances avec la communauté

Chargement des commentaires...