x 的 y 次方的递归方法

Recursive method for x to the power of y

我 2,3 得到 4。是什么原因造成的?

public static int basepowerexp(int base, int exp) {
    if (exp == 0) {
        return 1;
    } else {
        return base * basepowerexp(exp - 1, base);
    }
}

public static void bpe(int base, int exp) {
    System.out.println("The answer to " + base + " to the power of " + exp
            + " is " + power(base));
}

我认为这与以下方面有关:

return base * basepowerexp(exp - 1, base);

但想不通,我尝试了其他变体。

您必须更改函数调用中参数的顺序。这个:

return base * basepowerexp(exp-1,base);

对此:

return base * basepowerexp(base, exp - 1);

但我想知道你说的是 2,3 得到 4!因为我测试的答案是0。

编辑:

正如你提到的问题还存在,我会放一个工作代码,因为你可以找到问题:

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

    public static int basepowerexp(int base, int exp){
        if (exp == 0) {
            return 1;
        } else {
            return base * basepowerexp(base, exp - 1);
        }
    }
}

正是这段代码,为我打印 8。 如果问题存在,请告诉我。

当指数为 1 时应该达到基本情况。看看我的代码。

public class test {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        //Enter base;
        int base = in.nextInt();
        //Enter exponent
        int exp = in.nextInt();

        System.out.println("The answer to " + base + " to the power of "
            + exp + " is " + basepowerexp(base, exp));
    }

    public static int basepowerexp(int base, int exp) {
        if(exp >= 1)
            return base * basepowerexp(base, exp-1);
        else
            return 1;
    }
}