实现浮点类型的幂运算,pow(x,n) | 您所在的位置:网站首页 › 道路工程绩效目标申报表怎么填 › 实现浮点类型的幂运算,pow(x,n) |
实现浮点类型的幂运算,函数原型为: double pow(double x, int n) 下面介绍一下解决该问题的几种方法以及要注意的地方: 1)最直观容易想到的方法就是用递归方法求n个x的乘积,注意考虑n的正负号,时间复杂度为O(n) [cpp] view plain copy double pow(double x, int n) { if(n==0) return 1.0; if(n1); if(n%2==0) return half*half; else return half*half*x; }
3)除了上述方法,这里还提到了一种十分巧妙并且快速的方法,原文描述如下: Consider the binary representation of n. For example, if it is "10001011", then x^n = x^(1+2+8+128) = x^1 * x^2 * x^8 * x^128. Thus, we don't want to loop n times to calculate x^n. To speed up, we loop through each bit, if the i-th bit is 1, then we add x^(1 0) ans *= x; } return ans; } |
CopyRight 2018-2019 实验室设备网 版权所有 |