50. Pow(x, n)

来源:互联网 发布:开淘宝网店需要多少钱 编辑:程序博客网 时间:2024/06/03 14:29

1、题目描述

输入double x 和 int n,返回pow(x,n).

要注意的是n可能会是负数。


2、思路

假设n是正数,把n拆分成1+2+4+……之类的形式。

n是负数,也可以这样。


3、代码

    double myPow(double x, int n) {        double ans=1.0;        while(n!=0){            if(n%2==1)                ans*=x;            else if(n%2==-1)                ans=ans*1.0/x;            n/=2;            x=x*x;        }         return ans;          }

方法2:二分法

double myPow(double x, int n) {     if(n==0) return 1;    double t = myPow(x,n/2);    if(n%2) return n<0 ? 1/x*t*t : x*t*t;    else return t*t;}


原创粉丝点击