zoukankan      html  css  js  c++  java
  • 算法导论-求x的n次方

    目录                                                        

              1、分治求x的n次方思路

              2、c++代码实现

    内容                                                                

              1、分治求x的n次方思路T(n)=Θ(lgn)                      

             为了计算乘方数a^n,传统的做法(所谓的Naive algorithm)就是循环相乘n次,算法效率为Θ(n)。但是如果采用分治法的思想,算法效率可以提高到Θ(lgn),如下图所示。

              2、c++代码实现                                            

      Power.h        

     1 #ifndef POWER_HH
     2 #define POWER_HH
     3 template<typename T>
     4 class Power
     5 {
     6 public:
     7     T Power_Compute(T x,int n);
     8 };
     9 template<typename T>//带模板
    10 T Power<T>::Power_Compute(T x,int n)
    11 {
    12     if (1==n)  
    13         return x;
    14     else if(n>1)
    15     {
    16         int m=n/2; //取中间数
    17         T s=Power_Compute(x,m);//递归求x的n/2次方
    18         if (0==n%2)   //若n为偶数
    19              return s*s;
    20         else             //若n为奇数
    21              return s*s*x;
    22     }
    23 }
    24 #endif

       主函数 Power.cpp

     1 #include <iostream>
     2 #include "Power.h"
     3 using namespace std;
     4 int main()
     5 {
     6     Power<int> pow1;//x为整数
     7     Power<double> pow2;//x为小数
     8     cout<<pow1.Power_Compute(3,4)<<endl;
     9     cout<<pow2.Power_Compute(3.2,4)<<endl;
    10     system("PAUSE");
    11     return 0;
    12 }

        Output(输出):        

         

  • 相关阅读:
    POI做报表
    (一) DB2的备份和恢复:准备
    西天取经为节约成本该裁掉哪位?
    python中configpraser模块
    python中subprocess模块
    python中os模块
    python中random模块
    python中time模块和datetime模块
    python中序列化json模块和pickle模块
    迭代器生成器函数的递归调用与二分法
  • 原文地址:https://www.cnblogs.com/zhoutaotao/p/3959611.html
Copyright © 2011-2022 走看看