任务:
编写一个递归函数 recPow,用 Java 计算 n >= 0 时的 2n。该函数将具有以下配置文件:
public static int recPow(int n)
该功能必须考虑所有情况并进行详尽的测试。
我的问题
我不明白为什么当我输入时我的代码返回 -2147483648recPow(31)而不是 2147483648。我知道你们中的一些人可能会告诉我切换到 long 而不是 int,但我相信由于分配的措辞,我需要坚持使用 int。我从来都不是很擅长计算数字,如果有人能帮助我理解为什么会发生这种情况,我会非常感激。
此外 - 更大的指数返回 0(但是我认为这可能与我们需要使用整数与长整数的事实有关。)
我的代码
public static int baseNum = 2, powResult = 1;
public static int recPow(int n) {
//if the int is not bigger than 0
//must only accept ints
if (n < 0) {
throw new IllegalArgumentException("n has to be > 0");
} else {
//recursion here
//base number = 2
if (n==0) {
return powResult;
} else {
powResult = powResult * baseNum;
return recPow(n - 1);
}
}
}
白衣非少年
繁花不似锦
相关分类