本文主要是介绍快速计算 x 的 n 次幂函数-二进制,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
计算 x 的 n 次幂函数
将n换成二进制形式,以计算2的5次幂为例:
5的二进制形式为101,即 10 = 1 ∗ 2 0 + 0 ∗ 2 1 + 1 ∗ 2 2 10=1*2^0+0*2^1+1*2^2 10=1∗20+0∗21+1∗22
2 5 = 2 1 ∗ 4 0 ∗ 1 6 1 2^5=2^1*4^0*16^1 25=21∗40∗161
由此可见,每次乘的值都是前一个值的2次幂,当 n 对应位为0时跳过。
class Solution {
public:double myPow(double x, int n) {double res=1;long t=n;if (n<0) {t=-t;x=1/x;}else t=t;if (t==0) return res;else {while(t){if(t & 1) res *= x;x *= x;t >>= 1;}}return res;}
};
这篇关于快速计算 x 的 n 次幂函数-二进制的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!