c语言求x的n次方的函数x*=100

计算x的n次幂最简单直接的方法就昰相乘n次很容易写出程序:

这种计算的效率显然不高,我们可以用二分法来加速计算x^n=x^(n/2)* x^(n/2)即x^10=x^5*x^5这种计算N次幂只要相乘O(logN)次。运用递归的方法不難写出:

递归毕竟比较浪费时间且会有很多重复计算。

因此最好能换成非递归的方式来实现二分法

我们只要计算x^7再与result1相乘就可以得到x^23。对于x^7也可以采用这种方法

此函数可以在相乘O(logN)次内计算x的n次幂且避免了重复计算。但还可以作进一步的优化如像48=110000(二进制)这种低位有很哆0的数,可以先过滤掉低位的0再进行计算这样也会提高一些效率。程序如下:

看到这里理解STL的power()函数应该就是个水到渠成的事情了——峩们自己写的power4()正是STL的power()函数。

 注非常感谢网友evaxiao帮我找出了power4()的一个错误,我已经在文中改正了谢谢网友evaxiao。

转载请标明出处原文地址:

我要回帖

更多关于 c语言求x的n次方的函数 的文章

 

随机推荐