0

ブレークポイントが何回ヒットするのか疑問に思いました。

質問は次のとおりです。最初の4つのヒットのそれぞれについて、デバッガーで表示できるcurrentMin、current Max、およびmidの値を書き留めます。

私が持っている値は、n = 40、currentMin = 0、currentMax = 40、mid=20です。

これは4つのヒットですか?または、上記の値を使用してサイクルを4回繰り返す必要がありますか?

public class Breakpoint {

        public int breakp() {

                int n = 40;

                int currentMin = 0;
                int currentMax = n;

                while (currentMin < currentMax) {
                        int mid = (currentMin + currentMax) / 2;
                        if (mid * mid + mid + 1 <= n)//breakpoint is on this line {
                                currentMin = mid;
                        } else {
                                currentMax = mid;
                        }
                }
                return currentMin;

        }

        public static void main(String[] args) {

                Breakpoint b = new Breakpoint();
                int a = b.breakp();
                System.out.println(a);
        }

}
4

2 に答える 2

1

ブレークポイントがこの行の後にある場合:

if (mid * mid + mid + 1 <= n){

4回の反復後、値は次のようになります。

n:40 mid:7 currentMin:5 currentMax:10
于 2012-08-11T15:59:18.833 に答える
1

プログラムをトレースしているときに受け取った最初の4つのヒットは次のとおりです。

min=0, max=40, mid=20

min=0, max=20, mid=10

min=0, max=10, mid=5

min=5, max=10, mid=7

これらの値を取得するには、関数を4回回る必要があります。

于 2012-08-11T15:49:53.263 に答える