题目要求
分析
最暴力的办法便是,挨个乘起来。该种做法耗时且浪费了可重复利用的资源。何为可重复利用的资源?举个例子,x^8=(x^2)^2^2, 再如x^5=(x^2)^2 * x。也即可以利用二分查找的思想,将累乘对半、对半、再对半划分,只需算一半便可得出结果,如下图所示。
上图是pow(x,10)的例子,x^10=((x^2)^2*x)^2代码实现
double cal(double x, int n){
题目要求
分析
最暴力的办法便是,挨个乘起来。该种做法耗时且浪费了可重复利用的资源。何为可重复利用的资源?举个例子,x^8=(x^2)^2^2, 再如x^5=(x^2)^2 * x。也即可以利用二分查找的思想,将累乘对半、对半、再对半划分,只需算一半便可得出结果,如下图所示。
上图是pow(x,10)的例子,x^10=((x^2)^2*x)^2
代码实现
double cal(double x, int n){