
1.1.14:编写一个静态方法lg(),接受一个整型参数N,返回不大于log2N的最大整数(ps:不使用Math库)
分析:
利用将公式k=log2N转化为N=2k的原理,不断的逼近其输入的值N,当N<2k时,其(K-1)即为所求的值。代码如下,对题目部分细节进行了优化:
public static int lg(double N) { int k=0; if(N>0&&N<1) { double count=1; while(count>=N) { count*=1/2.0; k-=1; } return k+1; } else if(N>=1) { int count=1; while(count<=N) { count*=2; k+=1; } return k-1; } else return -1; }