キーワード辞典
物凄く乱暴なJava for全商1級+

登録日 16/11/29   更新日 16/11/29



フィボナッチ数列でみる9つの反復処理の例

詳しくは公式マニュアルをお読みください。
Javaって、こんな風にも書ける、とか、こうとも言う、とか、色々有るので、 以下は雰囲気だけのざっくりとした説明です。
作成中です。ミス有ったら後免。


フィボナッチ数列は、 「前の2つの項の値を足した値が、項の値になる」という数列です。
なかなか興味深い数列なので、詳細はググって下さい。



For

For は、基本は、繰り返す回数が判っている時の反復処理に用いる。
終了判定は前判定なので、1度も実行しない場合も有り得る。
配列のデータの処理などによく使われる。
基本形
第20項まで表示
// Fibonacci_0.java		2016.11.25	by Ryn

public class Fibonacci_0 {

	public static void main(String[] args) {

		int a = 1, b = 1, last = 20;
	
		for(int i = 0; i < last; i++){
			System.out.print(a + " ");
			b = a - b;
			a += b;
		}
	}
}


数列の項を意識した使い方
第20項まで表示
// Fibonacci_1.java		2016.11.25	by Ryn

public class Fibonacci_1 {

	public static void main(String[] args) {

		int a = 1, b = 1, last = 20;
	
		for(int term = 1; term <= last; term++){
			System.out.print(a + " ");
			b = a - b;
			a += b;
		}
	}
}


変則的な、While的な使い方
10000を超えない数まで表示
// Fibonacci_1a.java		2016.11.25	by Ryn

public class Fibonacci_1a {

	public static void main(String[] args) {

		int b = 1, limit = 10000;
	
		for(int a = 1; a < limit; a += b){
			System.out.print(a + " ");
			b = a - b;
		}
	}
}


もっと変則的な使い方
10000を超えない数まで表示
// Fibonacci_1b.java		2016.11.25	by Ryn

public class Fibonacci_1b {

	public static void main(String[] args) {

		int b = 1, limit = 10000;

		for(int a = 1; a < limit; b = a - b)
			System.out.printf("%d ",a += b);
	}
}


物凄く変則的な使い方
第20項まで表示
// Fibonacci_1c.java		2016.11.25	by Ryn

public class Fibonacci_1c {

	public static void main(String[] args) {

		for(int a=0, b=1, i=0; i<20; b=a-b, i++)
			System.out.printf("%d ",a += b);
	}
}


恐ろしく変則的な使い方
第20項まで表示
7行目最後の、b+=a は、改行していないだけ。
これ以上やると、トリッキーになってしまうので、おしまい。
// Fibonacci_1d.java		2016.11.25	by Ryn

public class Fibonacci_1d {

	public static void main(String[] args) {

		for(int a=0,b=1,i=0;i<20;System.out.printf("%d ",a=b-a),i++)b+=a;

	}
}



While

While は、基本は、繰り返す回数が判っていない時の反復処理に用いる。
終了判定は前判定なので、1度も実行しない場合も有り得る。
ファイルやキーボードからのデータの読み込みなどによく使われる。

10000を超えない数まで表示
// Fibonacci_2.java		2016.11.25	by Ryn

public class Fibonacci_2 {

	public static void main(String[] args) {

		int a = 1, b = 1, limit = 10000;

		while(a < limit){
			System.out.print(a + " ");
			b = a - b;
			a += b;
		}
	}
}


Do~While

Do~While は、基本は、繰り返す回数が判っていない時の反復処理に用いる。
終了判定は後判定なので、必ず1度は実行する。
キーボードからのデータの読み込みなどによく使われる。

10000を超えない数まで表示
// Fibonacci_3.java		2016.11.25	by Ryn

public class Fibonacci_3 {

	public static void main(String[] args) {

		int a = 1, b = 1, limit = 10000;

		do{
			System.out.print(a + " ");
			b = a - b;
			a += b;
		}while(a < limit);
	}
}


再帰

再帰でフィボナッチ数列を求める事が出来る。
ただし、フィボナッチの再帰は、非効率で時間がかかる事で悪名が高い。

第10項まで表示
// Fibonacci_9.java		2016.11.25	by Ryn

public class Fibonacci_9 {

	public static int fibo(int term) {

		if(term < 3)
	        return 1;
	    else
	        return fibo(term - 2) + fibo(term - 1);
	}


	public static void main(String[] args) {

		int last = 10;

		for(int term = 1; term <= last; term++)
			System.out.print(fibo(term) + " ");
	}
}




[ 黒板消しとチョーク受けの画像 ]