欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

2020年10月25日 数值的整数次方

程序员文章站 2022-06-25 16:12:04
题目描述给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。保证base和exponent不同时为0思路一:暴力解法,但是要考虑到指数为0和为负数的情况public class Solution { public double Power(double base, int exponent) { double ret = 1; if(exponent < 0){ base...

题目描述

给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
保证base和exponent不同时为0

思路一:
暴力解法,但是要考虑到指数为0和为负数的情况

public class Solution {
    public double Power(double base, int exponent) {
        double ret = 1;
        if(exponent < 0){
            base = 1/base;
            exponent = -exponent;
        }
        for(int i = 0;i<exponent;i++){
            ret = ret*base;
        }
        return ret;
  }
}

还有一种略复杂的递归法(快速幂)

2020年10月25日 数值的整数次方

class Solution {
public:
    double q_power(double b, int n) {
        if (n == 0) return 1.0;
        double ret = q_power(b, n/2);
        if (n&1) { // 奇数
            return ret * ret * b;
        }
        else {
            return ret * ret;
        }
    }
    double Power(double b, int n) {
        if (n < 0) {
            b = 1 / b;
            n = -n;
        }
        return q_power(b, n);
    }
};

本文地址:https://blog.csdn.net/SamuraiChamploo/article/details/109277754