2016-01-29 24 views
0

我想將此方法轉換爲一個循環,任何類型的循環都很好,我發現很難從遞歸轉換。爪哇,隱藏重新陷入一個循環

public class Problem5 
    { 
    public double getRoot(double a, double b) 
    { 
     double x = (a + b)/2; 

     if (b - a <= 0.00) 
     return x; 

     double y = getValue(x); 

     if(y < 0) 
     return getRoot(x, b); 
     else 
     return getRoot(a, x); 
    } 
+0

你檢查谷歌遞歸迭代相比的例子嗎? –

回答

0
public double getRoot(double a, double b) { 
    while (true) { 
     double x = (a + b)/2; 

     if (b - a <= 0.00) 
      return x; 

     double y = getValue(x); 

     if(y < 0) 
      a = x; 
     else 
      b = x; 
    } 
    throw new AssertionError("should not happen"); 
}