递归指数方法堆栈溢出

时间:2014-05-04 19:07:28

标签: java recursion exponent

我已经到处搜索我的问题的解决方案,但没有得到一个。所以我正在尝试做的是使用递归来找出传递的整数变量的基数是否为传递的指数的幂。所以例如3²是9.我的解决方案看起来就像我在这些论坛中找到的那样,但它不断给我一个堆栈溢出错误。这是我到目前为止所做的。(为了更容易,我尝试使用int直接不使用扫描仪测试我的递归)任何想法?

public class Power {
   public static int exp(int x,int n) {        
      n = 3;
      x = 2;

      if (x == 0) {
         return 1;
      }
      else { 
         return n * exp(n,x-1);
      }
   }

   public static void main(String[] args) {                           
      System.out.println(exp(2,3));
   }
}

1 个答案:

答案 0 :(得分:3)

嗯,你有三个问题。

首先,在方法内部,您需要重新分配xn。因此,无论您传入的是什么,x始终为2,n始终为3.这是您无限递归的主要原因 - 就方法而言,这些值永远不会更新。从代码中删除这些作业。

接下来,您的基本情况不正确 - 您希望在n == 0时停止。更改您的if声明以反映这一点。

第三,你的递归步骤是错误的。您希望调整下一个方法,缩减为n,而不是x。它应该改为return x * exp(x, n-1);