public class a1 {
private static int unit = 0;
private static int sum = 0;
public static void main(String[] foo) {
unit = 10;
System.out.println(tailRecur(unit));
System.out.println(tailRecur2(10));
}
public static int tailRecur(int result) {
int sum = result + unit - 1;
unit = unit - 1;
if (unit == 0) {
return sum;
}
return tailRecur(sum);
}
public static int tailRecur2(int unit) {
if (unit == 0) return sum;
sum = sum + unit;
return tailRecur2(unit - 1);
}
}
私は1 + ... + 10を達成するための簡単な方法を書いています。どの文が再帰構文の意味をよくするかはわかりません。すべてが私に正しい答えを与える。Javaでの再帰、どちらが最善でしょうか?
機能は、それが再帰の定義だけだ、自分自身を呼び出すので、これは意見がベースとしているようで、私はどちらもしていないことを言うだろう疑問 –
正しい。静的フィールドを使用してはいけません。 – Andreas
また、どちらもJavaで実現可能な実装ではありません。十分な大きさの 'unit'値の場合、StackOverflowErrorを取得します。 (しかし、おそらく "レッスン#2"です) –