2017-10-18 13 views
0

私はそれがこの方法のように動作し、なぜ、理解して誰かがいくつかの詳細な説明で私を助けることを願って、返り値については、基数2の対数Nより大きい最大の整数ではありません。

public class Ex14 { 
public static int lg(int N) { 
    int i, n; 
    for (i = 0, n = 1; n <= N; i++) { 
     n *= 2; 
    } 
    return i - 1; 
} 

public static void main(String[] args) { 
    System.out.println(lg(1025)); 
} 

}

+1

正確にわからないことはありますか? – user2023608

+0

@ user2023608 x = log2N xは答えが必要であり、N = 2 * 2 * 2 ......(x回)を意味しますが、なぜn = n * 2 –

答えて

0

そんなにループラウンドするたびにあなたに感謝していない、nを乗じたます二。したがって、ループが実行されると、nの値は1,2,4,8,16になります。それは2の整数乗を生成していますよね?

関連する問題