2014-09-30 49 views
0
String hailstone(int n){ 
    if(n >= 1) 
     if(n%2 == 0) 
      n = (n/2); 
     else 
      n = (n*3)+1; 
    else 
     return n; 
} 

我知道它需要返回一個字符串,我試過Integer.toString(n)但這沒有奏效,所以我不知道該怎麼辦。爲什麼我不回來爲冰雹工作?

+4

你爲什麼要返回一個'String'? (對我來說,至少)返回一個'int'會更有意義。 – Jeffrey 2014-09-30 19:13:44

+3

它編譯?因爲我非常肯定,如果只有一個路徑返回n,它將不會編譯。 – Compass 2014-09-30 19:14:31

回答

4

如果你想返回下在Collat​​z號碼的功能,刪除最後一個else

int hailstone(int n){ 
    if(n >= 1) 
     if(n%2 == 0) 
      n = (n/2); 
     else 
      n = (n*3)+1; 
    // else <--- should be removed. 
    return n; 
} 

和返回值更改爲int或做return String.valueOf(n);

然後,如果您想打印整個Hailstone系列你做類似

int n = initialValue; 
do { 
    System.out.println(n); 
    n = hailstone(n); 
} while (n != 1);