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

2019-06-13  本文已影响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;
  }
上一篇下一篇

猜你喜欢

热点阅读