-
카테고리
-
세부 분야
프로그래밍 언어
-
해결 여부
미해결
2진법 변환 재귀적 접근 방법에 관해 질문 있습니다.
21.12.23 12:36 작성 조회수 202
0
안녕하세요~ 제로초님, 요즘 재귀함수가 너무 어려워서 ㅠ.ㅠ 다양한 문제로 연습해보고 있는데요.
10진수를 2진수를 변환하는 문제를 이런 식으로 재귀적으로 풀어봤어요~
코드는 다 정상적으로 작동하는데... 사실 그래서 너무 혼란스러워요.
함수가 스스로 불려질 때마다, result가 빈 문자열로 초기화 되는데, 어떻게 최종적으로 result 값이 정상적으로 나오는 지 모르겠어요.
이 문제를 해결해보려고, 콘솔 로그도 여러 곳에 심어봤는데, result는 다 빈 문자열로 떠서, 너무 이해가 안 되네요ㅠ
어떻게 코드가 ( = result 가 ) 아무 문제 없이 잘 작동하는 건가요?? ㅠ.ㅠ
function binaryNum(num){
let result = '';
// base case
if( num <= 1 ){
return result + num;
}
if( num%2 === 0 ){
num = parseInt( num/2 );
return binaryNum(num) + '0';
}
if( num%2 === 1 ){
num = parseInt( num/2 );
return binaryNum(num) + '1';
}
}
binaryNum(10); // => 출력값 : 1010
답변을 작성해보세요.
3
조현영
지식공유자2021.12.23
result의 용도는 마지막에 result + num(사실상 '' + num)을 해서 숫자를 문자열로 바꾸는 역할정도밖에 안 됩니다.
num이 핵심이지 result는 의미 없습니다.
1
ODeorain
2022.01.07
와 덕분에 재귀적으로 이진법 변환하는거 배워갑니다!!
작성해주신 코드 보면서 중복되는 부분이 있어서 더 줄여봤어요!
function toBinary(val){
val = parseInt(val);
if(val <= 1){return String(val);}
const quotient = String(parseInt(val / 2));
const remainder = String(val % 2);
return toBinary(quotient) + remainder;
}//toBinary
답변 2