71.数值的整数次方(数字、运算)。
题目:实现函数double Power(double base, int exponent),求base的exponent次方。
不需要考虑溢出。
分析:这是一道看起来很简单的问题。可能有不少的人在看到题目后30秒写出如下的代码:
double Power(double base, int exponent)
{
double result = 1.0;
for(int i = 1; i <= exponent; ++i)
result *= base;
return result;
}
这个算法复杂度是n;
for(int i = 2; i <= exponent; i = i * 2){
result = result * result;
}
这个算法复杂度是logn.
package com.algo.ms;
public class NumPower71 {
public double Power(double base, int exponent)
{
double result = base;
for(int i = 2; i <= exponent; i = i * 2){
result = result * result;
}
if(exponent%2 ==1)
result = result * base;
return result;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
NumPower71 power = new NumPower71();
System.out.println(power.Power(2, 5));
}
}