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 的幂,那么你可以重载指数方法:

public static int exponent(int baseNum) {
   return exponent(baseNum, 10); 
}

当然,仅适用于指数值 >= 0。

于 2012-10-31T22:40:51.767 回答