题目描述
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
保证base和exponent不同时为0
解题思路
首先一个数的任意次方,这个数有可能是负数和正数和零,然后次方也有可能是负数和正数和零
- 当这个数是零时,0的任何次方就是0。
- 当这个数是正数时,分情况
- 次方为零,此时答案为1
- 次方为负数,算出来的结果要用1除以。
- 次方为正数,则正常给出
- 当这个数为负数时,跟正数一样
所以程序先判断这个数是不是零,是零直接返回,再判断次方是不是为1,如果为1返回1。如果次方为负数,不需要单独算,只需要把次方取反算次方正数为正数的情况,最后再用1除以就好,如果为正数,res保存当前幂的值。当次方不为零时,res=res*base
;–次方;
代码实现
class Solution {
public:double Power(double base, int exponent) {if(base == 0)return 0;if(exponent == 0)return 1;bool flag = true;double res = 1;if(exponent <0 ){exponent = -exponent;flag = false;}while(exponent!=0){res = base*res;exponent--;}if(flag == false)res =1/res;return res;}
};