2016-03-21 39 views
-2

Yöntem olarak adlandırılan yöntemim, çay kaşığı parçamı, sıfıra eşit olduğu için durması gerektiğinde iki kez tekrar edecektir. X, 1 fincan ve 1 çay kaşığı eşit olmalıdır, ancak 49 yerine 1 bardak ve 1 çay kaşığı 1 çay kaşığı olsun. X'in sıfıra eşit olduğu zaman neden iki kez tekrarlandığını anlamıyorum. Lütfen yardım et, sadece Java öğreniyorum.Durumum yanlış olsa bile, Yöntemim neden yineleniyor?

import java.lang.Math; 


    public class Third{ 


     double teaspoon = 1; 
     double tablespoon = 3; 
     double cup = 48; 
     double quarter = 12; 
     double third = 16; 
     double half = 24; 


    public void Method(double x){ 

     double[] measurement = new double[6]; 
      measurement[0] = 0; 
      measurement[1] = 0; 
      measurement[2] = 0; 
      measurement[3] = 0; 
      measurement[4] = 0; 
      measurement[5] = 0; 


    while(x>0){ 
     if(x>= cup){ 
      measurement[5] = Math.floor(x/cup); 
      System.out.println(measurement[5] + "CUPS"); 
      x = x-(cup*measurement[5]); 
      System.out.println(x +"@ cups"); 
      Method(x); 
     } 
     else if(x>= half){ 
      if (x%16==0) { 
       measurement[3] = Math.floor(x/third); 
       System.out.println(measurement[3] + "Third"); 
       x = x-(third*measurement[3]); 
       System.out.println(x+"@ third"); 
       Method(x); 
      } 
      else if(x%12==0){ 
       measurement[2] = Math.floor(x/quarter); 
       System.out.println(measurement[2] + "/4 QUARTER"); 
       x = x-(quarter*measurement[2]); 
       System.out.println(x+"@quarter"); 
       Method(x); 
      } 
      else{ 
       measurement[4] = Math.floor(x/half); 
       System.out.println(measurement[4] + "/2 HALF"); 
       x = x-(half*measurement[4]); 
       System.out.println(x+ "@half"); 
       Method(x); 
      } 
     } 
     else if(x>= third){ 
      if(x%12==0){ 
       measurement[2] = Math.floor(x/quarter); 
       System.out.println(measurement[2] + "/4 QUARTER"); 
       x = x-(quarter*measurement[2]); 
       System.out.println(x+"@quarter"); 
       Method(x); 
      } 
      else{ 
       measurement[3] = Math.floor(x/third); 
       System.out.println(measurement[3] + "/3 Third"); 
       x = x-(third*measurement[3]); 
       System.out.println(x+"@ third"); 
       Method(x); 
      } 
     } 
     else if(x>= quarter){ 
      measurement[2] = Math.floor(x/quarter); 
      System.out.println(measurement[2] + "/4 QUARTER"); 
      x = x-(quarter*measurement[2]); 
       System.out.println(x+"@quarter"); 
       Method(x); 
     } 
     else if(x>= tablespoon){ 
     measurement[1] = Math.floor(x/tablespoon); 
      System.out.println(measurement[1] + "Tablespoon"); 
      x = x-(tablespoon*measurement[1]); 
      System.out.println(x+"@TABLE"); 
      Method(x); 
     } 
     else if(x== teaspoon){ 
      System.out.println(x+ "Teaspoon"); 
      x = x-1; 
     } 
     else if(x>= teaspoon){ 
      if(x==1){ 
       System.out.println(x); 
       x = 0; 
      } 
      else{ 
      measurement[0] = Math.floor(x/teaspoon); 
      System.out.println(measurement[0] + "TEAS.."); 
      x = x-(teaspoon*measurement[0]); 
      } 

      } 

     else{ 
      measurement[0] =(x/teaspoon); 
      System.out.println(measurement[0] + "TEAS"); 
      x = x-(teaspoon*measurement[0]); 
      System.out.println(x+"@ TEEEEE"); 
      x= 0; 

     } 
     } 


    } 
    } 

cevap

1

bu olur çünkü sen hem döngü (while(x>0){) ve recurse (Method(x);).

Tüm Method(x); çağrılarını silerseniz ve döngüden ayrılırsanız, beklediğiniz gibi davranır.

İlgili konular