首页 > 学院 > 开发设计 > 正文

整数次幂的递归求解

2019-11-10 18:44:56
字体:
来源:转载
供稿:网友

整数次幂一般解法

时间复杂度O(n)的方法可以迭代n次,然后相乘结果返回,例如求xn伪代码:

double pow(x,n){ res=x; while(n--) res*=x; return res; }

递归法

使用递归的方法可以将复杂度降低到O(logn) 思路是比如一个数的8次幂,可以看成4次幂乘4次幂,进而分成2次幂乘2次幂,如果是奇数,在偶数结果的情况下额外乘上本身。

double myPow(double x, int n){ if (0 == n) return 1.0; if (1 == n) return x; if (2 == n) return x*x; double p = myPow(x, n / 2); p *= p; if (n % 2 == 0)//偶数 return p; else//奇数 return p*x;}
上一篇:wait和sleep的区别

下一篇:MySQL索引

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表