1. 程式人生 > >二分法pow和sqrt

二分法pow和sqrt

#include<iostream>
using namespace std;
int sqrt(int x)
{
if(x<2)
return 1;
int left=1;
int right=x/2;
//int last_mid;
while(left<=right)
{
int mid=left+(right-left)/2;
if(x/mid>mid)
{
left=mid+1;
//last_mid=mid;
}
else if(x/mid<mid)
{
right=mid-1;
}else
return mid;
}
//return last_mid;
}
double power(double x,int n)
{
if(n==0)
return 1;
double v=power(x,n/2);
if(n%2==0)
return v*v;
else
return v*v*x;
}
double pow1(double x,int n)
{
if(n<0)
return 1.0/power(x,-n);
else
return power(x,n);
}
int main()
{
for(int i=1000;i<1200;++i)
{
cout<<sqrt(i*i)<<" ";
if(i%10==0)
cout<<endl;
}
cout<<endl;
double x=2.0;
for(int i=0;i<10;++i)
cout<<pow1(x,i)<<endl;
}