剑指offer 面试题11 数值的整数次方

来源:互联网 发布:windows运维 书籍 编辑:程序博客网 时间:2024/06/05 19:17

E:\arithmetic\Power

O(lgn) 二分法

注意:整数可能是正、负、零


#include <stdio.h>double power(double base, int exponent);int main(int argc, char *argv[]){//测试用例:指数分别为整数、负数、基数、偶数、0;底数为0 double r;r = power(2, 3);printf("%lf\t", r);r = power(2, -3);printf("%lf\t", r);r = power(2, 4);printf("%lf\t", r);r = power(1, 3);printf("%lf\t", r);r = power(2, 0);printf("%lf\t", r);r = power(0, 0);printf("%lf\t", r);return 0;}double power(double base, int exponent){if(exponent == 0){if((base<0.000001)&&(-0.000001<base)){//!!!printf("error !0 power 0!\n");return 0;}return 1;}double result = base;int ex = exponent;if(exponent < 0){ex = (-1)*exponent;}int i;for(i=0 ; i<(ex>>1) ; i++){//!!!result *= result;}if(ex&0x01)//&result *= base;if(exponent < 0)result = 1/result;return result;}



0 0
原创粉丝点击