分治思想的应用2

来源:互联网 发布:樱桃初夏网络剧blibli 编辑:程序博客网 时间:2024/06/02 17:08

                                        分治思想的应用2

试题二:

题目非常简洁:试计算x 的n 次方。

也许你会想到直接利用pow函数 ,不过这样做就没有意义了 ,当然我们可以试用一个简单的循环来实现,或者试用简单的递归来轻松的

解决这道问题。不过今天我们要使用分治的思想来解决这道题目。我们不能忽略算法本身的效率,假如使用一个简单的递归,它的复杂度

将是指数级的,我们将用分治法来找到一个复杂度 lgn的方法

我们很容易得到公式 T (n) = T (n/2) + θ (1)

利用主定理可得到 T (n) = lg n  如果我们已经求得了x 的n/2次幂 ,就没必要再递归的求一次

所以上代码:

<span style="font-size:14px;">#include<iostream>using namespace std;double pow(double x,int n){if(n==1){return x;}if(n%2==0){double num = pow(x,n/2);return num*num;}else if(n%2==1){double num = pow(x,n/2);return x*num*num;}}int main(){double number = 4.2;int n = 4;cout<<pow(number,n)<<endl;return 0;}</span>

 

可以看出使用分治的思想发是非常简洁的,而且效率更高,分治思想甚至在我们的超大规模集成电路上也有很广泛的应用的,大家有兴趣可以深入了解下哦。

0 0
原创粉丝点击