编写一个计算x的n次方的递归方法power(x,n),x是一个浮点数,n是一个非负整数。
〔提示:power(x,n)可定义成2个等式:power(x,0)=1.0;n>=1时,power(x,n)=x*power(x,n-1)。)就是这个程序。
谢谢

解决方案 »

  1.   

    class a
    {
      public static void main(String [] args)
    {
    System.out.println(power(2,4));
    }
    float power(float x,int n)
    {
    if(n==0)
    {
    return 1;
    }else
    {
    return x*power(x,n-1);
    }
    }
    }
    编写一个改进后的power(x,n),它运行时会把n划分成2等分,若奇数时,会再乘以x。
      

  2.   

    class AAAA{
    public static void main(String[] args) {
    double d=AAAA.power(3,3);
    System.out.print(d); } static double power(double x,int n){
    if (n<0) System.out.print("n< 0 不考虑");
    if(n==0) return 1.0;
    else if(n==1) return x;
    else return power(x,n-1)*x ;
    }
    }
      

  3.   

    public class 测试1 {
    static double power(double x,int i){
    if(i==0)
    return 1;
    else
    return x*power(x,i-1);
    }
    public static void main(String[] aaa){
    System.out.println(power(2,3));
    }
    }
      

  4.   

    编写一个改进后的power(x,n),它运行时会把n划分成2等分,若奇数时,会再乘以x。
      

  5.   

    不就是:
     float power(float x, int n)
    {
      if(n<=0)
        return 1;
       return x*power(x,n-1);
    }
    是吧
      

  6.   

    static double power(double x,int n){
    if (n<0) {
    System.out.println("n< 0 不考虑");
    return 0.0/0.0;
    }
    else if(n==0) return 1.0;
    else if(n==1) return x;
    else {
    int half = n/2;
    double d = power(x,half) ;
    return  (n%2==0)? d*d : d*d*x; 
    }
    }
    (n<0) 时,没有一个return的话,存在陷入无限循环的bug。
      

  7.   

    公式和上面的改进,还仅仅是toy example。专业一点的代码完全不是这样的,呵呵
      

  8.   

    写一个较专业的代码:计算x的n次方的递归方法power(x,n),x为double,n为int(考虑负整数)。
    〔提示:使用>>运算,比如x^11 = x^8 *x^2 *x)
      

  9.   

    〔提示:n>0时,不应该采用递归,使用循环语句以提供效率。)
      

  10.   

    class math

       public static void main(String[] args)
         {
            System.out.println(power(2,5));
          }
       public double power(double x,int n)
         {
            if(n==0)
               return 1.0;
            else if(n>0)
               return power(x,n-1)*x;
            else if(n<0)
               return 1/power(x,-n);
          }
    }
      

  11.   

    不好意思,一冲动将类定义为了math.唉……