14.数值的整数次方

题目描述

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

保证base和exponent不同时为0

解题思路

  1. base = 0 时,返回0
  2. exponent = 0 时,任何数的0次方都为1;返回1
  3. exponent < 0 时,base^exponent 为 1 除以 base的exponent的绝对值次方(base绝对值的exponent绝对值次方分之一)
  4. exponent > 0 时,base^exponent 为 base的exponent的绝对值次方

代码实现

java 代码

    /**
     * 给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
     *
     * 保证base和exponent不同时为0
     *
     * 1. base = 0 时,返回0
     * 2. exponent = 0 时,任何数的0次方都为1;返回1
     * 3. exponent < 0 时,base^exponent 为 1 除以 base的exponent的绝对值次方(base绝对值的exponent绝对值次方分之一)
     * 4. exponent > 0 时,base^exponent 为 base的exponent的绝对值次方
     * @param base 基数浮点数
     * @param exponent 次幂
     * @return
     */
    public double power(double base, int exponent) {
        if (base == 0) {
            return 0;
        }
        if (exponent == 0) {
            return 1;
        }
        double res = 1;
        if (exponent < 0) {
            base = 1 / base;
            exponent = exponent * -1;
        }
        for (int i = 0; i < exponent; i++) {
            res *= base;
        }
        return res;
    }

    public static void main(String[] args){
        System.out.println(power(-2, 3));
        System.out.println(power(2, -3));
    }

Kotlin 代码

    /**
     * 给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
     *
     * 保证base和exponent不同时为0
     *
     * 1. base = 0 时,返回0
     * 2. exponent = 0 时,任何数的0次方都为1;返回1
     * 3. exponent < 0 时,base^exponent 为 1 除以 base的exponent的绝对值次方(base绝对值的exponent绝对值次方分之一)
     * 4. exponent > 0 时,base^exponent 为 base的exponent的绝对值次方
     * @param base 基数浮点数
     * @param exponent 次幂
     * @return
     */
    fun power(base: Double, exponent: Int): Double {
        var base = base
        var exponent = exponent
        if (base == 0.0) {
            return 0.0
        }
        if (exponent == 0) {
            return 1.0
        }
        var res = 1.0
        if (exponent < 0) {
            base = 1 / base
            exponent *= -1
        }
        for (i in 0 until exponent) {
            res *= base
        }
        return res
    }



    /**
     * 入口函数
     */
    fun main(args: Array<String>) {
        println(power(-2.0, 3))
        println(power(2.0, -3))
    }

引用声明

该题目引用自
牛客网