the algorithms to solve the question X^N

来源:互联网 发布:q房网经纪人端口下载 编辑:程序博客网 时间:2024/06/06 02:48

Algorithm 1:time complexity O(N)

double pow(double x, long n){ if(n==0) return 1; /*when n=0 whatever the x is,the pow is 1*/ if(n==1)     return x;   /*when n=1 the result is x itself*/ else {  double tempa=1.0000;  while(n--) tempa=tempa*x;  return (tempa); /*every time make n-- then multiply a xto get the result*/ }}
Algorithm 2:time complexity O(log(N))

double pow(double  x, long n){ if(n==0)return 1;   /*when n=0 whatever the x is,the pow is 1*/ if(n==1)  return x; /*when n=1 the result is x itself*/ double temp=1.0; while(n) {if(n%2) temp*=x; /*when n is odd*/x*=x;n/=2; } return temp;}
Algorithm 3:time complexity O(log(N))

double pow(double x, long n){ if(n==0) return 1;  /*when n=0 whatever the x is,the pow is 1*/ if(n==1)     return x;  /*when n=1 the result is x itself*/ if(n%2==0) return pow(x*x,n/2);  /*when n is an even increase x to x*x and decrease n to n/2*/ else     return pow(x*x,n/2)*x; /*when n is an odd increase x to x*x and decrease n to n/2 an then multiply x*/}

Actually,algorithm 2 is a iterative version of algorithm 3,while algorithm is a recursive version.




原创粉丝点击