题目描述
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。(保证base和exponent不同时为0)
解题思路
本题虽说不难,但主要是考察对编程全面性的理解。
1、考虑指数与底数同时为零的问题。
2、底数为零,指数为负数时便会出现对零求倒数。(如果指数为负,先将指数取反,对底数取导数便能正常进行计算)
(注意考虑使用二分法的方法来计算)
C++实现
class Solution {
public:
double Power(double base, int exponent) {
if(exponent < 0)
{
exponent = -exponent;
base = 1.0/base;
}
//if(exponent == 0)
// return 1; 不用写,指数为零时返回值为1(result初始化为1)
if(base == 0 && exponent == 0)
return -1;
double result = 1;
for(int i = 0; i < exponent; i++)
{
result *= base;
}
return result;
}
};
Python实现
# -*- coding:utf-8 -*-
class Solution:
def Power(self, base, exponent):
# write code here
if exponent < 1:
return 1 / self.GetPower(base, -exponent)
else:
return self.GetPower(base, exponent)
def GetPower(self, base, exponent):
if base == 0:
return 0
elif exponent == 1:
return base
result = 1
for i in range(exponent):
result *= base
return result