用C语言怎么编一个a^n(a的n次方)的算法?

Python013

用C语言怎么编一个a^n(a的n次方)的算法?,第1张

如果n比较小,可以吧

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)

}