C言語における正弦波の近似値の再帰的計算
再帰関数 Approx_sin(x,n)=x - x^3/3!+ x^5/5!- x^7/7!+ ...(-1)^n * x^(2*n-1) / (2*n-1)!計算者 次数 n.#include
#include
unsigned long fact_recursive (unsigned short nombre)
{
if (number == 0)
return 1;
else
戻り値 * fact_recursive(数値 - 1);
}
unsigned int puiss(long int x, int n)
{
if(n == 0)
return 1;
if(n == 1)
return x;
int x2 = power(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);
//表示
if(n%2==1)
printf("n = %d -->%f\n",n,fraction);
else
printf("n = %d -->-%f\n",n,fraction);
//終了条件 if n=1 then Approx_sin=x;
if(n==1)
{
return x;
}
else{
//n が奇数の場合、符号は正
if(n%2==1)
return calcul_formule(x,n-1)+分数;
//n が奇数の場合、符号は負
else
return calcul_formule(x,n-1)-fraction;
}
}
int main(int argc, char *argv[])
{
int n;
float x;
printf("xの値を入力してください: ");
scanf("%d",&x);
printf("nの値を入力してください: ");
scanf("%d",&n);
//計算式
printf("Approx_sin(%f, %d ) = %f\n",x,Approx_sin(x,n) );
system("pause");
}