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))
}

引用声明

该题目引用自
牛客网