我得到4分2,3。会导致这种情况的原因是什么?
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);
但无法弄清楚,我已尝试过其他变体。
答案 0 :(得分:5)
您必须更改函数调用中的参数顺序。这样:
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 :(得分:-1)
当指数为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;
}
}