给定整数n和k,找到n ^ k的值。我试图递归地做这个,但我不明白我哪里出错了。有人可以帮忙吗?
00891
答案 0 :(得分:1)
错误在于n % 2 != 0
时的情况。在此,您必须返回binaryPower(n, k - 1) * n;
,但返回binaryPower(n, k - 1);
。
目前,如果我们以3 3 为例 3 3 - > 3 2 - > 9 1 - > 9 0 - > 1
应该是:
3 3 - > 3 2 * 3-> 9 1 * 3 - > 9 0 * 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
}