IMWeb提升营Day2 | 训练题12:数值的整数次方

来源:互联网 发布:火四川方言版网络原唱 编辑:程序博客网 时间:2024/06/02 01:38

题目描述

给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。

思路

/* * 思路:注意分指数是正数/灵/负数的情况 * */class Solution {public:    double Power(double base, int exponent) {        if(exponent == 0) return 1.0;        double result = 1.0;        if(exponent > 0){            while(exponent--){                result = result * base;            }        }else{            exponent = -exponent;            while(exponent--){                if(base == 0) return -1;                result = result/base;            }        }        return result;    }};

思路

/* * 思路二:注意分指数是正数/灵/负数的情况 * 通过2的倍数来减少乘法的次数:举例:10^1101 = 10^0001*10^0100*10^1000。 */class Solution {public:    double Power(double base, int exponent) {        if(exponent == 0) return 1.0;        double result = 1.0;        int n;        if(exponent > 0){            n = exponent;        }else{            n = -exponent;        }        while(n != 0){            result *= result;            if((n & 1) != 0){                result *= base;            }            n >>= 1;        }        return exponent>0 ? result : (1/result);    }};
原创粉丝点击