计算x^n多种算法

 1 /*编写程序计算x^n,要求:
 2 1输入整数x和n
 3 2输出x^n的值
 4 3思考算法是否可以进一步提升效率,如何提升?
 5 4改进并实现算法,分析时间复杂度
 6 */
 7 
 8 #include<iostream>
 9 using namespace std;
10 /*
11 //原始方法
12 原始方法的时间复杂度为 O(n)
13 double pow(int x,int n)
14 {
15     if(n<0){
16         return 1/pow(x,-n);
17     }
18     if(n==0){
19         return 1;
20     }
21     int sum=1;
22     for(int i=1;i<=n;i++)
23         sum*=x;
24     return sum;
25 }
26 */
 1 //改进方法
 2 /*
 3 改进方法的时间复杂度为 O(n)
 4 
 5 double pow(int x,int n)
 6 {
 7     if(n<0){
 8         return 1/pow(x,-n);
 9     }
10     if(n==0){
11         return 1;
12     }
13     //n>0时
14     int a=n/2;
15     int sum=1;
16     for(int i=1;i<=a;i++){
17         sum*=x;
18     }
19     if(n%2==1)
20         return sum*sum*x;
21     else
22         return sum*sum;
23 
24 }*/
 1 //时间复杂度为 O(log2(n))
 2 double pow(int x,int n)
 3 {
 4     if(n<0){
 5         return 1/pow(x,-n);
 6     }
 7     if(n==0){
 8         return 1;
 9     }
10     //n>0时
11     double sum=1;
12     int d;
13     while(n!=0)
14     {
15         d=n%2;
16         n=n/2;
17 
18         if(d==1)
19             sum*=x;
20     x*=x;
21     }
22     return sum;    
23 }
 1 int main()
 2 {
 3     //主函数测试
 4     cout<<"输入整数x和n:(n>0)";
 5     int x,n;
 6     double s;
 7     cin>>x>>n;
 8     s=pow(x,n);
 9     cout<<s<<endl;
10     return 0;
11 }

 

转载于:https://www.cnblogs.com/jiechao26/p/7568900.html

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值