如何在java或者python中不用math库而用递归写出精确度高的计算loga(n)的方法?以a为底def recursivelog(n, x, b, l=None, u=None):
assert( n >= 0)
assert( x >= 1)
assert( isinstance(b, int) )
assert( b >= 2 )
float(x)
if(x<b):
return 0
else:
return 1+ recursivelog(n-1,x/b,b)
我自己的程序精度太差而且返回的都是整数
2 回答
天涯尽头无女友
TA贡献1831条经验 获得超9个赞
public static double loga1(int level, double a, double n) {
if (a <= 0 || n <= 0)
return Double.NaN;
if (level > 500)
return 1;
if (a == 1) {
return Double.NaN;
} else if (a > 1) {
if (n > a) {
return 1 + loga1(level + 1, a, n/a);
} else if (n == a) {
return 1;
} else { //n < a
return 1 / loga1(level + 1, n, a);
}
} else { //a < 1
return -loga1(level + 1, 1/a, n);
}
}
隔江千里
TA贡献1906条经验 获得超10个赞
随便找一个程序
double MYLOG(double a) { int N = 15;//我们取了前15+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; }
- 2 回答
- 0 关注
- 166 浏览
添加回答
举报
0/150
提交
取消