14.数值的整数次方
题目描述
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
保证base和exponent不同时为0
解题思路
- base = 0 时,返回0
- exponent = 0 时,任何数的0次方都为1;返回1
- exponent < 0 时,base^exponent 为 1 除以 base的exponent的绝对值次方(base绝对值的exponent绝对值次方分之一)
- 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))
}
引用声明
该题目引用自
牛客网