美文网首页
【剑指16】数值的整数次方

【剑指16】数值的整数次方

作者: 浅浅星空 | 来源:发表于2019-06-13 23:51 被阅读0次

    题目描述

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

    分析

    本方法思想:如果求10次方用循环做,需要做十次,但是如果我们求5次方的2次方只需要五次即可,9次方=4次方4次方本身,所以这就使得我们想到用递归求解,同时要注意负数和0的问题。

    image.png
        public double Power(double base, int exponent) {
            if (base == 0) return 0;
            if (exponent == 0) return 1;
    
            double result = 1;
            if (exponent > 0) {
                for (int i = 1; i <= exponent; i++) {
                    result *= base;
                }
            }
    
            if (exponent < 0) {
                for (int i = 1; i <= -exponent; i++) {
                    result *= 1 / base;
                }
            }
            return result;
        }
    
    public double Power(double base, int exponent) {
            if (base == 0) return 0;
            if (exponent == 0) return 1;
            if (exponent == 1) return base;
            if (exponent > 1) {
                double result = Power(base, exponent >> 1);
                result = result * result;
                if ((exponent & 1) == 1) {
                    return base * result;
                }
                return result;
            }
            if (exponent < 0) {
                exponent = -exponent;
                double result = Power(base, exponent);
                return 1 / result;
            }
            return -1;
      }
    

    相关文章

      网友评论

          本文标题:【剑指16】数值的整数次方

          本文链接:https://www.haomeiwen.com/subject/vfdyfctx.html