第一首先是泰勒公式,不过公式哥不记得了,有兴趣的去查查,那个实现不难。
第二递归,利用3个公式
sin(x) = 2 * sin(x/2)*cos(x/2)----------------公式1
cos(x) = sqrt(1 - sin(x)*sin(x))----------------公式2
lim sinx = x, 当x趋向于0的时候-----------------公式3
将求sin(x)的问题,分解成求sin(x/2)的问题,然后利用公式3结束递归。
#include<iostream>
#include<math.h>
using namespace std;
double ssin(double x)
{
if( x < 0.0000001)//定定义一个无穷小
return x;
double result = ssin(x/2);
return 2*result*sqrt(1-result*result);//利用公式1和公式2
}
int main()
{
double x;
cin>>x;
fflush(stdin);
cout<<ssin(x)<<endl;
getchar();
return 0;
}