Java:基于Java中“N”问题的力量

时间:2011-04-01 11:45:45

标签: java

问题陈述:

给定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)

我发现很难解决这个问题?帮帮我 编辑:我需要一个不使用内置数学公式和递归的解决方案

6 个答案:

答案 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;
 }