재귀 이진수 변환 출력이 강의와 다릅니다
336
작성한 질문수 4
-
public class Example02 { public static void main(String[] args) { int n = 11; //이진수 : 1011 recursion(n); } static void recursion(int n) { if(n/2 == 0) { return; } recursion(n/2); System.out.print(n%2); } }
안녕하세요 강사님,
위는 제가 작성한 코드 입니다.
코드 상 강사님이 작성하신 코드와 출력이 다를 이유는 없다고 생각이 드는데, 제 출력값은 항상 1011 이 아닌,
011이 나오네요...
조금 수정해서,
위 소스코드의 if 문을
if( n/2 == 0 && n%2 ==1) {
System.out.print(1);
return;
}
으로 변경하니, 정상적인 결과가 출력 되었습니다.
혹시 이건 왜그런지 알 수 있을까요?
위 소스코드는 강의의 코드와 출력이 다르게 나올 이유가 없을것 같은데, 출력이 달라서요
강의가 알고리즘을 공부하는데 참 많은 도움이 됩니다.
감사합니다.
답변 1
0
recursion(11)(출력o) -> recursion(5)(출력o) -> recursion(2)(출력o) -> recursion(1)(출력o) -> recursion(0)(출력x).
재귀가 이런식으로 n이 0에 도달 할 때, 재귀 탈출을 시작해야 하는데, 작성하신 코드는 recursion(1)에서 탈출을 시작합니다.
재귀 탈출 조건문을 if(n == 0)으로 바꾸시면 될 듯 합니다.
안녕하세요. 바뀐 채점사이트 관련해서 문의드립니다.
0
71
2
갑자기 채점 사이트가 바뀌었어요
0
50
1
문제 리스트 페이지
0
43
1
채점 사이트 관련 질문드립니다
0
42
1
봉우리 문제 질문입니다
0
102
2
씨름 선수 문제에서 각 선수의 몸무게나 키가 같을 수도 있다면?
0
73
0
이 코드랑 영상 코드중에 뭐가 더 좋은 코드인가요?
0
78
0
가중치 방향 그래프에서 가중치가 0인 간선을 표현하는 방법
0
76
1
좌표 정렬 문제 이 코드가 왜 틀린지 모르겠습니다 ㅠㅠ
0
94
2
6-7 강의에서
0
53
1
6-6. 장난꾸러기 질문 있습니다.
0
50
1
강의 수강후 코딩테스트
0
126
1
answer 변수 사용 여부
0
50
1
2중 for문
1
96
2
2-11. 임시반장정하기 (Runtime Error)
0
67
1
혹시 LinkedList 같은 자료 구조들은 따로 배우지 않나요?
0
75
1
이런 풀이는 어떨까요
0
50
1
자바 스트림 방식의 효율성 질문 드립니다.
0
62
1
알고리즘 자료 구조들..
0
68
1
StringBuilder vs BufferdWriter
0
53
1
원더랜드(프림)
0
55
1
이런 코드는 어떤가요?
0
66
1
bfs 풀이
0
62
1
병합정렬
0
58
1





