题目描述
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
python实现:
# -*- coding:utf-8 -*-
class Solution:
# 法1: 递归写法
def Power2(self, base, exponent):
# write code here
if exponent == 0:
return 1
if base == 0:
return 0
if exponent == 0 and base == 0:
raise Exception('error')
if exponent < 0:
return 1.0/pow(base, -exponent)
v = self.Power(base, exponent//2)
if exponent & 0x1 == 0: # 偶数
return v *v
else: # 奇数
return v * v * base
# 法2:非递归写法
def Power(self, base, exponent):
if exponent == 0:
return 1
if base == 0:
return 0
if exponent == 0 and base == 0:
raise Exception('error')
is_neg = False
if exponent < 0:
exponent = -exponent
is_neg = True
v = 1
for _ in range(exponent):
v = v*base
if is_neg:
return 1.0/v
return v
c++实现:
class Solution {
public:
double Power(double base, int exponent) {
if(exponent==0)
return 1;
if(exponent<0)
return 1/Power(base, -exponent);
double v = Power(base, exponent/2);
if(exponent&1==0)
return v*v;
else
return base*v*v;
}
};