面试题---数值的整数次方

来源:互联网 发布:python 读取 csv 编辑:程序博客网 时间:2024/05/18 22:41

题目:实现函数 double Power(double base,int exponent),求base的exponent次方。不得使用库函数,同时,

不需要考虑大数问题。

 分析:1、考虑越界问题

              2、指数小于1的情况处理

              3、效率问题。

        提高效率的方法:如果输入的指数为32,我们在函数中需要做31次乘法,但如果我们知道了这个数的

16次方,那只要在这个数的16次方上面平方一次就好啦,二16次方是8次方的平方,这样以此类推,我们求32

次方只要做五次乘法就可以了,先求平方,在平方的基础上求4次方,在四次方的基础上求8次方,在8次方的基

础上求16次方,在16次方的基础上求32次方。

源码实现:

double  Power(double base,int exponent)

{

    if(exponent == 0)

         return 1;

    if(exponent == 1)

        return base;

     double result= Power(base,exponent >> 1);

     result *= result;

     if(exponent & 0x1 ==1)

         result *= base;

   return  result;

}

原创粉丝点击