问题陈述:
给定base和n均为1或更大,计算base的值为n幂,因此powerN(3, 2)
为9(3平方)。
示例
powerN(3, 1) → 3
powerN(3, 2) → 9
powerN(3, 3) → 27
功能签名为public int powerN(int base, int n)
我发现很难解决这个问题?帮帮我 编辑:我需要一个不使用内置数学公式和递归的解决方案
答案 0 :(得分:7)
public int powerN(int base, int n) {
int result = 1;
for (int i = 0; i < n; i++) {
result *= base;
}
return result;
}
答案 1 :(得分:3)
最流行的方法是:
sum = base
while (power > 1)
if (power is even)
sum = sum * sum
power = power / 2
else
sum = sum * base
power = power - 1
return sum
你可以转换为Java,我只想给你一般的想法。
答案 2 :(得分:2)
您可以使用递归:
public int powerN(int base, int n)
{
if (n == 0) {
return 1;
} else {
return (powerN(base, n-1) * base);
}
}
答案 3 :(得分:1)
假设你的力量保持在int limit
int out = 1;
for(int i=n; i>0; i--)
out = out*base;
return out;
答案 4 :(得分:0)
public int powerN(int base, int n) {
return Double.intValue(Math.pow ( base, n));
}
好的,我看到你不能使用内置函数:
public int powerN(int base, int n) {
if (n == 0) {
return 1;
} else {
int result = 1;
for (int i = 0; i < n; i++) {
result = result * base;
}
return result;
}
}
答案 5 :(得分:0)
来自Elias Yarrkov的快捷方式the-most-efficient-way-to-implement-an-integer-based-power-function-powint-int
通过平方来表示。
public static long powerN(long base, long n)
{
long result = 1;
while (n > 0)
{
if ((n & 1) == 1)
result *= base;
n >>= 1;
base *= base;
}
return result;
}