単一の int をパラメーターとして取り、渡された int を 10 乗して返す再帰メソッドを作成することは可能ですか?
これは私がこれまでに持っているものですが、StackOverFlow エラーが発生します:
public static int exponent(int baseNum) {
return baseNum * exponent(baseNum);
}
いつ再帰を停止するかを再帰関数に伝えるのを忘れました。永遠に続くので、スタックエラーが発生します。
public static int exponent(int baseNum, int exp) {
if (exp == 0)
return 1;
else
return baseNum * exponent(baseNum, --exp);
}
これで、次のように呼び出して 32^10 を取得できます。
exponent(32, 10);
また、特殊な関数で数値を 10 乗したい場合は、 exponent メソッドをオーバーロードできます。
public static int exponent(int baseNum) {
return exponent(baseNum, 10);
}
もちろん、指数値>= 0でのみ機能します。