给定整数n和k,找到n ^ k的值。我试图递归地执行此操作,但我无法理解我要去哪里。有人可以帮忙吗?
int binaryPower(int n, int k) {
if (k == 0) {
return 1;
}
if (k % 2 == 0) {
return binaryPower(n * n, k / 2);
}
return binaryPower(n, k - 1);
}
最佳答案
错误在于n % 2 != 0
的情况。在这里,您必须返回binaryPower(n, k - 1) * n;
,但是您返回binaryPower(n, k - 1);
。
目前,以33为例。
33-> 32-> 91-> 90-> 1
它应该是:
33-> 32 * 3-> 91 * 3-> 90 * 3 * 9-> 27
更改的代码:
int binaryPower(int n, int k) {
if (k == 0) {
return 1;
}
if (k % 2 == 0) {
return binaryPower(n * n, k / 2);
}
return binaryPower(n, k - 1) * n; // Changed
}
关于java - 二进制功率误差,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38859094/