Skip to content

Latest commit

 

History

History
51 lines (40 loc) · 888 Bytes

16.md

File metadata and controls

51 lines (40 loc) · 888 Bytes

数值的整数次方

题目

实现函数 double Power(double base, int exponent),求base的exponent次方

注意:

  1. 保证base和exponent不同时为0
  2. 不得使用库函数,同时不需要考虑大数问题
  3. 有特殊判题,不用考虑小数点后面0的位数

进阶:空间复杂度 O(1),时间复杂度 O(n)

示例

  • 输入:2.00000,3
  • 返回值:8.00000

思路

边界

  • 指数为0的情况,不管底数是多少都应该是1
  • 指数为负数的情况,求出的应该是其倒数幂的倒数
  • 指数为负数的情况下,底数不能为0

实现

func Power(base float64, exp int) float64 {
	if exp == 0 {
		return 1
	}
	if exp < 0 && base == 0 {
		return -1
	}
	if exp < 0 {
		base = 1 / base
		exp = -exp
	}
	res := 1.0
	for exp != 0 {
		if exp&1 == 1 {
			res *= base
		}
		base *= base
		exp >>= 1
	}
	return res
}