result
*=
a循环n次。。
如果n比较大,
可以逐步来算。
这样考虑,f(n)
=
2^n
如果有了
f(m)的结果,
那么
f(2m)和f(2m+1)
就分别等于
f(m)*f(m)和f(m)*f(m)*a
所以可以从最高位开始查看n的每一位,
如果这一位是1,
那么
result
=
result
*
result
*
a
如果这一位是0,那么result
=
result
*
result
其中result
的初始值是1。
这样复杂度就是log(n)的
float mypow(float a,int n) //递归求法{
if (n==1)
return a
return a*mypow(a,n-1)
}