数值的整数次方

计算 x 的 n 次幂函数,不需要考虑大数问题。

示例 1:

输入:x = 2.00000, n = 10
输出:1024.00000

示例 2:

输入:x = 2.10000, n = 3
输出:9.26100

示例 3:

输入:x = 2.00000, n = -2
输出:0.25000
解释:2-2 = 1/22 = 1/4 = 0.25

提示:

  • -100.0 < x < 100.0
  • -231 <= n <= 231-1
  • -104 <= xn <= 104

代码如下:

double myPow(double x, long long n)

{double demp;

if(n==0)return 1;

else if(n>0)

{

if(n%2==1)return myPow(x,n-1)*x;

else {demp=myPow(x,n/2);return demp*demp;}

}

else

{ n=-n;

if(n%2==1)return 1/(myPow(x,n-1)*x);

else {demp=myPow(x,n/2);return 1/(demp*demp);}

} } 

//利用递归实现快速幂。如果是2的倍数次方我们就把它对半分开成两部分,再把它们乘起来,如果不是2的倍数次方我们就求它的倍数次方减去1,转化成2的倍数次方,再乘以它本身一次即可。这样递归下去我们就实现了一个数求它很大的幂,变成了许多小的幂相乘。

PS:POW函数实际上是对指数函数的泰勒展开进行的近似求值,当指数很大时展开式也非常非常长,pow函数进行了大量运算,时间复杂度为o(0),而快速幂时间复杂度为o(logn)。

上一篇:VLAN-1 基础配置及access接口


下一篇:eNSP——VLAN基础配置和Access