let number = 11; 2진수 변경시 1011
let result = "";
while (true) {
//1이면 2진수 변환이 끝난 것,따라서 맨 처음에 확인
if (number === 1) {
result=1+result;
break;
}
if (number % 2 === 1) {
result = 1 + result;
} else {
result = 0 + result;
}
number = Math.floor(number / 2);
}
console.log(result); => 1011
실행 과정
number result number
11 1 5
5 11 2
2 011 1
1 1011
이렇게도 해보았다.
let result = "";
while (true) {
if (number % 2 ===1) {
result = '1'+result;
} else {
result ='0'+result;
}
number = Math.floor(number/2);
if (number===1) {
result='1'+result;
break;
}
}
console.log(result)
const 이진법 = (숫자) => {
if (숫자===1) return '1';
return 이진법(Math.floor(숫자/2))+String(숫자%2);
}
console.log(이진법(11)); //1011
실행 return
이진법(11) 이진법(5)+1 // 1011
이진법(5) 이진법(2)+1 // 101
이진법(2) 이진법(1)+0 // 10
이진법(1) 1
* 주의 String()안 써주면 1+0+1+1이 되서 3을 반환!
let target = "seoul";
const 문자열거꾸로만들기1 = (문자) => {
if (문자.length === 1) return 문자;
return (
문자[문자.length - 1] + 문자열거꾸로만들기1(문자.slice(0, 문자.length - 1))
);
};
console.log(문자열거꾸로만들기1(target)); // luoes
let target2 = "seoul";
const 문자열거꾸로만들기2 = (문자) => {
if (문자.length === 1) return 문자;
let arr = target2.split("");
let end = arr.pop(); // 맨 마지막 문자
target2 = arr.join(""); // 마지막 문자가 빠진 문자열을 반환
return end + 문자열거꾸로만들기2(target2);
};
console.log(문자열거꾸로만들기2(target2)); // luoes
const fb = (fiboIndex) =>{
if (fiboIndex===1 || fiboIndex===2) return 1;
return fb(fiboIndex-1)+fb(fiboIndex-2);
}
console.log(fb(8)); //21