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

무엇이 홀수에 대해이 코드를 제공합니다. 우리가 그것을 나눌 때 그것은 정수가되지 않을 것입니다.재귀 매개 변수 문제

+7

왜 시도해보고 보지 않으시겠습니까? –

+1

진짜 질문이 아닙니다 – developer

답변

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

파람은 PARAM 5, 함수가 PARAM과 함께있을 것입니다 다음 호출 될 것입니다 경우 2 Java 또는 대부분의 다른 프로그래밍 언어에서

1

, 당신은에 의해 정수를 나눌 때, 예를 들어, int로 반올림합니다 정수이면 결과는 정수가됩니다. 십진수가 발생하면, 예를 들어 말 :

5/2=2.5 

후, 소수점 앞의 숫자는 정수로서 취급되며 2가 선택 될 것이다. 사용자가 명시 적으로 부동 또는 이중으로 정수를 변환 할 경우

, 당신은 다음의 변환 중 하나를 사용할 수 있습니다

(float) 3/2; 

(double) n/2; 

위 명시 적으로 진수로 변환합니다.

+0

@ 루이스 와서 만 : 저는 번호의 바닥 기능을 사용한다고 언급했습니다. 따라서 바닥 (-1/2)은 0이됩니다. –

+0

전통적으로 [바닥]이 의미하는 것이 아니라 [no,] (http://en.wikipedia.org/wiki/Floor_and_ceiling_functions#Examples) Java 자체에서] (http://docs.oracle.com/javase/6/docs/api/java/math/RoundingMode.html#FLOOR)를 참조하십시오. –