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;
}
}
我 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;
}
}