剑指offer第十二题。
题目描述
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
解题思路
把两个问题考虑清楚就可以了。第一个问题是判断指数是不是小于0,这关系到要不要取倒数;第二个问题是判断底数是不是负数,这个时候,如果指数是偶数,则为正数,如果指数为奇数则为负数。
我们将问题简化,将底数设置为正数,设好标识符最后统一处理,我们的首要目标是计算出次方数,最后再判断上面的两种情况,对结果进行调整。
我的答案
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| public class Solution { public double Power(double base, int exponent) { if(exponent == 0){ return 1; } int e = exponent; if(exponent < 0){ e = -exponent; } boolean flag = true; if(base % 2 == 0){ flag = false; } double res = 1.0; while(e > 0){ res *= base; e--; } if(exponent < 0){ res = 1/res; if(flag){ res = 0-res; } } return res; } }
|
注:貌似有更快的方法,暂时先不考虑了。