0

単一の int をパラメーターとして取り、渡された int を 10 乗して返す再帰メソッドを作成することは可能ですか?

これは私がこれまでに持っているものですが、StackOverFlow エラーが発生します:

public static int exponent(int baseNum) {                       

   return baseNum * exponent(baseNum); 

}
4

1 に答える 1

2

いつ再帰を停止するかを再帰関数に伝えるのを忘れました。永遠に続くので、スタックエラーが発生します。

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でのみ機能します。

于 2012-10-31T22:40:51.767 に答える