剑指offer:数值的整数次方
题目描述:
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
解题思路:
一开始直接用一个for循环做连乘,测了一下,发现这个指数可能是负数,于是分了两种情况后ac。
看了网上的题解,发现还有base为0的情况,此时直接就返回0,但是这里不能直接用==来判断两个小数是否相等。设定一个很小的数来做判断,例如0.0000001。
代码:
class Solution { public: double Power(double base, int exponent) { if((base-0)>-0.0000001 && (base-0)<0.0000001) return 0; if(exponent==0) return 1; double sum=1; if(exponent>0) { for(int i = 1; i<=exponent; i++) { sum = sum*base; } return sum; } else{ for(int i=1; i<=(-exponent); i++) { sum = sum*(1.0/base); } } return sum; } };