编写一个静态方法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
进行考虑。