如何用递归计算Loga(n) java或者python

如何在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)
我自己的程序精度太差而且返回的都是整数


米琪卡哇伊
浏览 218回答 2
2回答

天涯尽头无女友

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 < areturn 1 / loga1(level + 1, n, a);}} else { //a < 1return -loga1(level + 1, 1/a, n);}}

隔江千里

随便找一个程序&nbsp;double&nbsp;MYLOG(double&nbsp;a)&nbsp;&nbsp; {&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;int&nbsp;N&nbsp;=&nbsp;15;//我们取了前15+1项来估算&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;int&nbsp;k,nk;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;double&nbsp;x,xx,y;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;x&nbsp;=&nbsp;(a-1)/(a+1);&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;xx&nbsp;=&nbsp;x*x;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;nk&nbsp;=&nbsp;2*N+1;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;y&nbsp;=&nbsp;1.0/nk;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;for(k=N;k>0;k--)&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;{&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nk&nbsp;=&nbsp;nk&nbsp;-&nbsp;2;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;y&nbsp;=&nbsp;1.0/nk+xx*y;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;}&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;return&nbsp;2.0*x*y;&nbsp;&nbsp; }
打开App,查看更多内容
随时随地看视频慕课网APP