【初心者】Java質問・相談スレッド93【大歓迎】
レス数が900を超えています。1000を超えると表示できなくなるよ。
0949ぴゅあ
2006/11/20(月) 09:50:27何とか導き出せなかったのは残念ですが…
static int arrayMin(int[] a, int i) {
System.out.println("I: i=" + i);
if (i > 0) {
System.out.println("C: a[" + (i - 1) + "]=" + a[i - 1]);
int min = arrayMin(a, i - 1);
System.out.println("R1: min=" + min + " a[" + (i - 1) + "]=" + a[i - 1]);
// if (min > a[i - 1]) {
// min = a[i - 1];
// }
// System.out.println("R: min=" + min);
return min;
}
System.out.println("R2: a[" + i + "]=" + a[i]);
return a[i];
}
まず"if (i > 0)"によりa[9]〜a[0]についてarrayMinメソッドの再帰呼び出しが起こりますよね
(>>921で1つ目と言っていたところ)
i=0でarrayMinメソッドが呼ばれたら、末尾のreturnが実行されa[0]を返却値に戻り
最後のarrayMinメソッドの呼び出しに戻る,つまりminの値はa[0]となる
つまりその前の1つ目のreturnでminを返却値として戻る
以降、順次1つ目のreturnで戻ることになる
(同じく3つ目と言っていたところ)
それらはまず上記のコードで確認してみれば判るでしょう
そして2つ目と言っていたところは上記のコードのコメントアウトしてあるコードを生かしてみれば確認できるでしょう
レス数が900を超えています。1000を超えると表示できなくなるよ。