2012-07-31 42 views
-3
public void mystery1(int n) { 
if (n <= 1) { 
    System.out.print(n); 
} else { 
    mystery1(n/2); 
    System.out.print(", " + n); 
} 
} 

是什麼給這個奇數的代碼。因爲我們劃分它不會是一個整數。遞歸參數問題

+7

你爲什麼不試試看? – 2012-07-31 10:47:41

+1

不是一個真正的問題 – developer 2012-07-31 10:49:39

回答

1

沒有神祕感,因爲Java中整數除法的結果是整數。

0

n/2,這是一個整數除法,其中小數部分將被忽略。

System.out.println(3/2); // prints 1 
System.out.println(3.0/2); // prints 1.5 
System.out.println(3/2.0); // prints 1.5 
System.out.println(3.0/2.0); // prints 1.5 
0

帕拉姆將四捨五入爲int,例如如果param爲5,下一次調用該函數將與參數2

1

在Java或其他大多數編程語言,當你通過劃分一個整數整數,結果將是一個整數。如果發生一個十進制數,例如說:

5/2=2.5 

然後,小數點之前數將被視爲整數和2將被選擇。如果你想整數明確地轉換爲浮動或雙

,您可以使用以下任何轉換:

(float) 3/2; 

(double) n/2; 

上面明確地將其轉換爲十進制。

+0

@LouisWasserman:我已經提到它需要數字的底層函數。因此,(-1/2)的層數將爲0. – 2012-07-31 11:43:50

+0

傳統上,[不],(http://en.wikipedia.org/wiki/Floor_and_ceiling_functions#Examples)這不是「floor」的意思,即使[如使用在Java本身](http://docs.oracle.com/javase/6/docs/api/java/math/RoundingMode.html#FLOOR)。 – 2012-07-31 21:12:55