传统的计算方法为循环n个a相乘。时间复杂度为O(n)。
如用分治算法,效率可提升至O(lgn)。
结合recursive有
double pow(int a, int n){ if(n==0) return 1; if(n==1) return a; double t = pow(a,n/2); return t * t * pow(a,n%2); }
也可用循环的方法
double pow(int a, int n){ double res = 1; while(n){ if(n%2==1) res =res * a; a = a* a; n/=2; } }