2012-10-17 4 views
0

이것은 학교에서 배정 된 질문입니다. 하나의 정수를 매개 변수로 취하여 이진수로 출력하는 toBinary라는 재귀 메서드를 만듭니다. 당신이 볼 수 있듯이, 내가 어떻게 문제는 단지 같은 단일 정수가 나를 원할 때 모든 % 2 개 값을 저장하는 배열을 만드는 아무 생각이재귀에서 배열을 만드는 방법은 무엇입니까?

import java.util.*; 
class MethodAssign6{ 
static void toBinary(int a){ 
    if(a==0){ 
     System.out.print("theArrayOrStringIWant"); 
    } 
    else{ 
     System.out.println(a%2); 
     toBinary(a/2); 
    } 
} 
public static void main(String[]args){ 
    toBinary(24); 
} 
} 

: 여기

내 코드입니다 매개 변수. 누구든지 제게 도와 주시면 감사하겠습니다.

답변

3

나는 올바른 방향으로 가고 있다고 생각하지만, 현재의 방법은 숫자를 거꾸로 출력합니다.

static void toBinary(int a){ 
    if(a!=0) { 
     toBinary(a/2); 
     System.out.print(a%2); 
    } 
} 

당신은 또한 문자열 사용하여 유사한 효과를 얻을 수있다 : 다음 인쇄 재귀 호출과 을하고 시도

static String toBinary(int a){ 
    if(a==0) { 
     return ""; 
    } 
    else { 
     return toBinary(a/2) + (a%2); 
    } 
} 

public static void main(String[]args){ 
    System.out.println(toBinary(24)); 
} 
+0

당신은 당신의 대답은 얼마나 좋은 날 충격을가했습니다 나 goosebumps .... –

+0

@ 요리사 - 그것은 당신이 이미 가지고있는 것과 다르지 않습니다 - 당신은 거의 거기에 있었다. 내 대답이 기뻤다! 이것이 당신이 찾고 있던 대답이라면 당신이 그것을 받아들이면 좋을 것입니다. – DaoWen

1

일반적으로 이와 같은 재귀 적 방법에는 공용 메서드와 계산을 완료하는 데 사용되는 개인 메서드가 있습니다. 따라서 public 메서드는 하나의 정수를 취한 다음 값을 보유 할 배열을 설정합니다. private 배열은 정수와 현재 배열을 취하여 배열에 값을 추가 할 수 있도록합니다. 마지막으로 private 메서드가 반환되면 public 메서드는 배열을 구문 분석하고 결과를 반환합니다.

1

실제로 비트를 인쇄하면 배열에 보관할 필요가 없습니다. 당신도 System.out.print를 사용할 수 있습니다. 번호를 거꾸로 인쇄하지 않도록 인쇄 및 재귀 호출에 대한 호출 순서에주의를 기울여야합니다.

-1
// static String[] valsbyte = new String[10]; // global variable if you return a string 
static byte[] valsbyte = new byte[10]; // global variable 


// static String[] toBinary(int a){ // if you return a string 
static byte[] toBinary(int a){ 
n++; 
if(n>10){ // check recursion to jump over process and internal method call 


// valsbyte[n] = a%2; // if you reurn a string 

valsbyte[n] = new Integer(ax).byteValue(); // convert to byte 



//LAST LINE OF METHOD 
return valsbyte[n]; 
+0

스택 오버플로에 오신 것을 환영합니다. 일반적으로 대답은 코드 덤프가 아닌 올바른 이유를 설명하는 것이 바람직합니다. 보다 철저한 대답을하면 더 많은 upvotes (따라서 명성과 특권)를 얻을 수 있습니다. – KRyan

관련 문제