编写一个静态方法lg(),接受一个整形参数N,返回不大于 log2N 的最大整数。不要使用Math函数库。
import edu.princeton.cs.algs4.StdIn;
import edu.princeton.cs.algs4.StdOut;
public class Test {
public static void main(String[] args) {
StdOut.println("Input your number:");
int n = StdIn.readInt();
StdOut.println("Answer: " + (32 - Integer.numberOfLeadingZeros(n) - 1));
}
}
考虑的关键在于在java中整数的储存是二进制的,所以结合 log2 进行考虑。