剑指 offer 笔记 12 | 数值的整数次方

2019-06-13  本文已影响0人  ProudLin

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

思路分析
题目要求,int 类型的整数 exponent,那么意味着 exponent 可以是 正整数、负整数、零,三种情况。

1)当 exponent 为正整数时,就要对 base 进行乘积几次,一个 for 循环即可;

2)当 exponent 为负整数时,先对 exponent 取正,接着跟 1)一样,对 base 进行乘积几次;

3)当 exponent 为零时,直接返回 1 即可;

PS:可能有人在想,如果 传入的 double 类型的浮点数 base 为 0.0 时该怎么办,从数学上来说,传入 0 是没有任何意义的, 0 多少次幂都为 0;

image.png
public class Solution {
    public double Power(double base, int exponent) {
        double result = base;
        if(exponent > 0){    //当 exponent是正整数
            for(int i = 1; i < exponent; i++){
                result *= base;
                    if(result > 1.7976931348623157E308){
                        System.out.println("已经超出double类型的取值范围。");
                        return -1;
                    }
            }
            return result;
        }else if(exponent < 0){    //当 exponent是负整数
            exponent = -exponent;
             for(int i = 1; i < exponent; i++){
                result *= base;
                    if(result > 1.7976931348623157E308){
                        System.out.println("已经超出double类型的取值范围。");
                        return -1;
                    }
            }
            return 1/result;
        }else{ // 当 exponent 为 0
            return 1;
        }
        
  }
}

参考文献https://www.nowcoder.com/profile/937880/codeBookDetail?submissionId=1514426
https://www.nowcoder.com/profile/641155/codeBookDetail?submissionId=1504859

上一篇 下一篇

猜你喜欢

热点阅读