26.1.3.2 監視つき繰返し

今度は問題を変えて 倍々ゲームを何回やれば一億倍になるか を考えてみましょう

今までに習った方法でやろうとすると,たとえばDoublingのプログラムで

for(p=0; p<35; p=p+1)

として35回分出力してみて,一億を越すところを人間が判断することになります.20回で100万を越しましたから,あと15回ぐらいやれば十分です.

原理的にはこれでよいのですが,「見込み実行」が気持ち悪いですし,第一人間が判断しなけばならないという大問題があります.人間による判断は間違いのもとです.また「自動化」もできません.

この種の問題,つまり,特定の条件を満たすまで処理を繰り返すことが求められている問題を解くことができるように,ふつうのプログラミング言語には条件監視つき繰返しが用意されています.Javaではこの場合,forの代りにwhileを使います.

class Doubling2{
    public static void main(String argv[ ]) {
	int x=1, p=0;
	while(x<100000000) {
	    p=p+1;
	    x=x*2;
	}
	System.out.println(p);
    }
}

fileDoubling2.java