剑指 Offer 16. 数值的整数次方
剑指 Offer 16. 数值的整数次方
题目
1 | 实现 pow(x, n) ,即计算 x 的 n 次幂函数(即,xn)。不得使用库函数,同时不需要考虑大数问题。 |
思路
累乘的思路,典型的快速幂思路。如果逐个累乘,需要for循环n次,但是如果用快速幂(二分),则可以在n^(1/2)^内完成。
例如:
如果求2^10^,在正常思路下,我们需要2*2*2*2*2*2*2*2*2*2
,这样乘10次,但是如果我们使用二次幂的思想:我们可以用10^(1/2)^=4次循环完成
1 | 第一次:a = 2 * 2 |
所以接下来完成具体过程:
注意1:在奇数幂和偶数幂的情况下不一样
$$
当 nn 为偶数: x^n = (x^2)^{n/2}
\当 nn 为奇数: x^n = x(x^2)^{n/2},会多出来一项x
$$
注意2:在幂可以为负数
如果幂为负数,我们可以转换为乘以(1/x)
,然后把幂的次数还是转化为正数
实现
1 | private static class Solution { |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 吕小医's BLOG!