算法导论-求x的n次方

时间:2025-02-24 16:36:59

目录

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

2、c++代码实现

内容

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

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

算法导论-求x的n次方

2、c++代码实现

Power.h

 #ifndef POWER_HH
#define POWER_HH
template<typename T>
class Power
{
public:
T Power_Compute(T x,int n);
};
template<typename T>//带模板
T Power<T>::Power_Compute(T x,int n)
{
if (==n)
return x;
else if(n>)
{
int m=n/; //取中间数
T s=Power_Compute(x,m);//递归求x的n/2次方
if (==n%) //若n为偶数
return s*s;
else //若n为奇数
return s*s*x;
}
}
#endif

主函数 Power.cpp

 #include <iostream>
#include "Power.h"
using namespace std;
int main()
{
Power<int> pow1;//x为整数
Power<double> pow2;//x为小数
cout<<pow1.Power_Compute(,)<<endl;
cout<<pow2.Power_Compute(3.2,)<<endl;
system("PAUSE");
return ;
}

Output(输出):

算法导论-求x的n次方