使用 int、double 和 long 计算幂

Swe*_*lo7 5 java double int long-integer

我无法弄清楚何时使用 int、double 和 long。

我正在计算整数的幂并返回结果,只要提供的幂不是负数。

对于作业,我需要使用以下代码开始:

public static long powerN(int number, int power) {
Run Code Online (Sandbox Code Playgroud)

这是我想出的:

public class PowerCalculator
{
/**
 * Calculate the non-negative power of an integer number. If a negative power is input, the method returns 1.
 * 
 * @param number The number to take power.
 * @param power The power factor to be taken to.
 * @return The calculation result after taking power of the integer number.
 */
    public static long powerN(int number, int power) {

       if (power > 0)
       {  
         double result = (Math.pow(number, power));  
         return result; 
       }
       else 
       {
         return 1; 
       }
    }
}
Run Code Online (Sandbox Code Playgroud)

我知道我搞砸了 int、double 或 long 的使用,但我不知道如何解决。

小智 5

等待!如果您自己做,请使用更快的算法,例如通过平方求幂,如下所示:

long powerN(long number, int power){
    long res = 1;
    long sq = number;
    while(power > 0){
        if(power % 2 == 1){
            res *= sq; 
        }
        sq = sq * sq;
        power /= 2;
    }
    return res;
}
Run Code Online (Sandbox Code Playgroud)


nra*_*rez 2

你可以自己做:

public static long powerN(
   int number, 
   int power
) {
   if(power == 0) return 1;
   int result = number;

   while(power > 1) {
      result*=number;
      power--;
   }

   return (long)result;
}
Run Code Online (Sandbox Code Playgroud)

PS:这不处理负权力。