今天笔试的时候碰到一个这样的问题:

用一种比a^n = a*a*a*......*a更优的算法来计算a的n次方。本人用二分法实现如下:

long power(int a,int n){
    long r = 1;
    int c = 0;  //记录乘法执行的次数
    while(n){
         if(n&1){
              r *= a;
              c ++;
          }
         a *= a;
         c ++;
         n = n >> 1;
}

不知道C语言中的pow函数是如何实现的,有知道的同仁贴上来看看,分享分享........