前端时间有个笔试题让实现自己的log函数 来计算log n(m),当时仔细想了想没有找到好的解决办法,回来后在网上发现一个不错的解决办法,特意转载过来
转载自:http://blog.csdn.net/mike190267481/article/details/7404702
log a(b)=ln(b)/ln(a)
因此,我对原文章的代码我改了一下下,不在是求ln(x) 而是求 loga(b)
具体代码如下:
#include<stdio.h>
double MYLOG(double a)
{
int N = 50;//我们取了前50+1项来估算
int k,nk;
double x,xx,y;
x = (a-1)/(a+1);
xx = x*x;
nk = 2*N+1;
y = 1.0/nk;
for(k=N;k>0;k--)
{
nk = nk - 2;
y = 1.0/nk+xx*y;
}
return 2.0*x*y;
}
int main()
{
double a,b;
scanf("%lf %lf",&a,&b);
double result = MYLOG(b)/MYLOG(a);
printf("%.8f",result);
getchar();
return 0;
}