>>897
再帰でやりたいというところは再帰の例として微妙かもしれないような気もするけど…
(素直にfor文とかの方がいいんじゃないかと
ただ再帰処理という処理の流れの中でやるということは出てくることは想定できるでしょうけど)

arrayMinメソッドがうまく書けてないということですよね?
まずはprintArrayメソッドの中でやってみる形で確認してみてはどうでしょうか
或いはそれは解っているからやってないのかも知れませんけど、いちおコードを書いてどういう処理になるのか目に見えるようにして考えてみるのもいいかも

arrayMinメソッド…つまり再帰処理でこれをやろうとすると
1.a[0]〜a[N-1]の値を全て見るように動いてくれないといけない
2.返却値として最小値を返していくようにしないといけない
3.は比較の元になる値とその入れ物がないといけない・・・で、その入れ物としては返却値ですよね

1つ目はif文とarrayMinメソッドの再帰呼び出しで実現できているでしょう
それはarrayMinメソッドの先頭にSystem.out.println("i=" + i);とか入れてみると動きが見えるでしょう

先に…3つ目は2つのreturnが何時呼ばれるかと何を返すかをまず見てみればいいと思うので、returnの直前で返そうとしている値を表示させてみればいいでしょう(どっちのreturnであるかを確認できるように表示して)
なおa[0]〜a[N-1]の値も予め表示して判っているとして

そしてarrayMinの再帰呼び出しの戻りとして返却値が何を返すか、a[]のどの要素を見ることになるかというところで、
戻ってきたときのminの値とiの値がそのとき何なのかを見てみるといいでしょう
その上で2つ目として、小さい方の値を判断するのは何処でどうやって(判定処理)返してやればいいかを考えればできると思います

解り難い説明かもしれないけど
再帰呼び出しを考えるポイントは(1つのメソッド内の一連の流れが1つの層として重なっているとして)今見ているのがどこか(どの層か)
i,a[]の何番目の要素を見るか,minに注目して考えてみるのがいいのかも