计算一个数字的立方根,不使用库函数

详细描述:

接口说明

原型:

public static double getCubeRoot(double input)

输入:double 待求解参数

返回值:double  输入参数的立方根



输入描述:
 
  

待求解参数 double类型



输出描述:
 
  

输入参数的立方根 也是double类型


输入例子:
216


输出例子:
6.0





import java.util.Scanner;

//普通方法 
public class Main {
     public static void main(String[] args) {
         Scanner cin = new Scanner(System.in);
         while (cin.hasNext()) {
             double input = cin.nextDouble();
             double min = 0 ;
             double max = input;
             while (max - min > 0.00001 ) {
                 double temp = (min + max) / 2 ;
                 
                 if (temp*temp*temp > input) {
                     max = temp;
                 } else  {
                     min = temp;
                 }
             }
             min*= 10 ;
             double small = min - ( int )min;
             if (small >= 0.5 ) {
                 min++;
             }
             int n = ( int )min;
             min=( double )n/ 10 ;
             System.out.println(min);
         }
     }
}


//牛顿迭代

  1. #include <stdio.h>                 

  2. //#include <stdlib.h>                 

  3.   

  4. #define jingdu 0.0001                 

  5. double          newton_diedai(         double          a){        

  6.     double          xn,xn_1;        

  7.   

  8.     xn=1;  

  9.     xn_1 = xn-((xn*xn*xn-a)/(3*xn*xn));  

  10.     while         (xn-xn_1>jingdu || xn-xn_1<-jingdu){        

  11.         xn = xn_1;  

  12.         xn_1 = xn-((xn*xn*xn-a)/(3*xn*xn));  

  13.     }  

  14.     return          xn_1;        

  15. }  

  16.   

  17. int          main(         void         ){        

  18.     double          a;        

  19.   

  20.     scanf("%lf"         , &a);        

  21.     a = newton_diedai(a);  

  22.     printf("%.1f"         , a);        

  23.   

  24.    // system("pause"         );        

  25.     return          0;        

  26. }