在Java中使用递归方法表示指数

时间:2015-04-05 22:50:00

标签: java recursion

我必须创建一个递归方法,它接受一个双x和int n,并返回x ^ n。最初我将会有类似的东西

public static double power(double x, int n){
    if(n < 1){
        return 1;
    }else{
        double total = x;
        for(int i = 0; i < n-1; i++){
            total = x*x;
            power(total,x);
    }
  }

但在问题中它说“这个操作的递归定义是x ^ n = x·x ^ n-1。”我是Java的新手,这种方式似乎不会递归,因为我只是做x * x ^ n-1。我对Java很陌生,所以也许我只是感到困惑,但我只是在寻找一些关于如何与递归方法相关的澄清。

2 个答案:

答案 0 :(得分:0)

这是我能找到的最简单方法:

public static double power(double x, int n){
    if(n < 1){
        return 1;
    }else{
       return x * power(x, n-1);
    }
}

答案 1 :(得分:0)

这是一个解决方案:

public static double power(double x, double n){
            if(n <= 1)
                return x;
            return x*power(x,n-1);
}

通过使用 for循环,您无法递归地解决问题。 以下是如何使用 for循环递归方法执行相同操作的示例:

for(int i = 0;i<10;i++) //for loop
{
            System.out.print(i);
}

public void print(int i) // recursive, call this method like so: print(0);
{
    if(i<10)
    {
        System.out.println(i);
        print(++i);
    }
}

这两种技术都会打印出相同的结果:

  

0   1   2   3   4   五   6   7   8   9