2진법 변환 문제 관해서 질문있습니다.
322
작성한 질문수 28
선생님께서 보여주신 재귀함수 풀이법 말고, 저는 처음에 이런 식으로 시도해봤는데요.
값들이 다 잘 나오는데, 사실 그래서 많이 혼란스럽니다. 함수가 스스로 불려질 때마다, 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);
답변 1
1
안녕하세요 은길님! 답변드리겠습니다 ㅎㅎ
예시로 올려주신 코드를 실행해 보면 result 값이 사용되는 곳은, 함수가 재귀하면서 실행되는 가장 마지막 재귀함수입니다.
가령 binaryNum(10) 함수가 실행되면
binaryNum(10) --> binaryNum(5) --> binaryNum(2) --> binaryNum(1)
이런 순서대로 재귀하게 될텐데요, 이때 가장 마지막에 실행되는 binaryNum(1) 함수에서만 result 값이 사용되며 그 용도도 num 값을 문자열로 만드는 정도로 사용하고 계시는걸로 보입니다. 그렇기 때문에 사실 보내주신 코드에서 result 라는 값을 제거하고
console.log(binaryNum(10)); 이렇게 리턴값을 확인해봐도 문제 없이 작동하고 있습니다.
결론적으로 result 의 초기화는 위의 코드 작동에 크게 영향을 미치지 않는다고 보시면 될것 같습니다.
감사합니다 :)
71번 깊이 우선 탐색 질문드립니다.
0
201
1
이렇게 하는건 안좋은 방법일까요?
0
362
0
강의상 32번째 줄 질문드립니다
1
314
1
안녕하세요..!
0
437
0
1~100번 외의 자료에 대한 코드는 없을까요?
0
277
0
질문있습니다.
0
216
0
33번 문제 for문대신 join 사용
0
224
0
const, let
0
296
1
객체 식별자는 변수 또는 promt로 가지고 올수 없다는 건가요?
1
255
1
문자열이 둘다 숫자, 왜 가능해요?
1
239
1
20번 문제에 parseInt()로 10진수를 왜 하나요?
1
206
1
질문 있습니다.
0
219
0
문제 12번
1
207
1
선생님 이 포문이상한데요..
1
231
1
만약 1980년 1월1일 부터의 로직을 짜려면 코드 어느 부분을 수정해야할까요??
0
233
0
알고리즘 공부방법에 대해서 질문있습니다.
0
221
0
질문 드립니다!!
0
235
1
for 반복문 관련 문의
0
198
0
47번 문제 질문
0
242
1
행렬 곱에서 i,j,k를 len으로 통일시키면 2*3 3*2행열 계산이 안됨니다.
1
233
1
function문 호출하기 질문입니다~
0
221
0
8번) 점 접근자로 숫자 불가하네요!
0
155
0
병합정렬에서 질문드립니다.
0
267
1
선생님 궁금한점이있습니다.
3
167
0





