数值的整数次方
题目
本章开始将关注代码的质量,关注功能测试、边界测试和负面(错误测试),写出完整的代码。
实现double Power(double base, int exponent),求base的exponent次方,不得使用库函数,同时不需要考虑大数问题。
思路
这道题很容易实现,但是需要注意以下陷阱:1)0的负数次方不存在;2)0的0次方没有数学意义;3)要考虑exponent为负数的情况。所以可以对exponent进行分类讨论,再对base是否为0进行讨论。
java代码
递归实现
1 | /** |
非递归实现
上面的powerCore()方法可改写成如下:
1 | private double powerCore(double base, int exponent) { |
总结
- double 类型变量在被赋值为0时,是可以用等号判等的
- 做乘方的地推公式要掌握,用递推公式能够更加简洁;
- 使用位与运算符代替求余运算符%判断奇偶数,有较高的效率:if ((exponent & 0x1) == 1)
- 非递归实现乘方,其本质是根据指数与2的倍数关系来对底数进行操作的