자전거 처음 탈때처럼 자연스러워질 때까지 연습해야합니다.
function recursion () {
console.log("Hello");
console.log("Recursion");
rescursion();
}
재귀는 알고리즘의 많은 부분을 차지 하기 때문에 기초를 확실하게 다져두는 게 좋습니다.
arrMul : [number] => number
arrMul : [number] => number
arrMul([])
arrMul([요소1, 요소2, ..., 요소n])
arrMul : [number] => number
arrMul([]) === 0
arrMul([요소1, 요소2, ..., 요소n])
arrMul : [number] => number
arrMul([]) === 0
arrMul([요소1, 요소2, ..., 요소n]) === 요소1 * arrMul([요소2, ..., 요소n])
재귀적 사고 단계를 거쳐 쪼개고 해결한 것들을 코드로 구현합니다.
function arrMul(arr:number):number {
// base case : 문제를 더 이상 쪼갤 수 없는 경우
if (arr.length === 0) return 1;
// recursive case : 문제를 연속적으로 쪼갤 수 있는 경우
return arr.shift() * arrMul(arr);
}
console.log(arrMul([1, 2, 3, 4])); // 24
fac : number => number
fac : number => number
fac(1)
fac(5,4,3,2)
fac : number => number
fac(1) === 1
fact(5,4,3,2)
fac : number => number
fac(1) === 1
fact(5,4,3,2) === 5 * fac(5-1)
function fac(num: number):number {
// TODO
if (num === 1) return 1;
return num * fac(num-1);
}
console.log(fac(5)); // 120
const fac = function(num: number):number {
// TODO
if (num === 1) return 1;
return num * fac(num-1);
}
console.log(fac(5)); // 120
const fac = (num: number):number => {
// TODO
if (num === 1) return 1;
return num * fac(num-1);
}
console.log(fac(5)); // 120
코드스테이츠 프론트엔드 부트캠프
타입스크립트 공식문서