前几天看到一个学习算法的资源。。其中讲到二分法,提到了用二分搜索技术查找已经排好序的N个元素中的某个元素。。本身是很简单的。但是后面有一个思考题,提到如何使用二分法求a的n次方。但没有给出答案。我想了一会儿,不会。但是又想了一会儿,突然有思路了。二分法其实是一种分治的思想,分而治之。。找到他们最小部分的共同点。普通求a的n次方的方法,最简单的莫过于:
int power(int a,int n)
{
int result= 1;
for(int i=1;i<=n;i++)
{
result*=a;
}
return result;
}
其实有更好的办法,如果n恰好是2的幂,比如说是8,我们就可以采用平方模式,第一次循环算出x·x=x2,第二次循环算出x2·x