![[인프런 워밍업 클럽 스터디 3기] 2주차 미션 - 자료구조와 알고리즘](https://cdn.inflearn.com/public/files/blogs/d0aaacc0-987d-4f67-9b0c-32d9efb76b73/336224.png)
[인프런 워밍업 클럽 스터디 3기] 2주차 미션 - 자료구조와 알고리즘
16일 전
재귀함수에서 기저조건을 만들지 않거나 잘못 설정했을 때 어떤 문제가 발생할 수 있나요?
재귀함수가 계속 본인을 호출하면서 콜 스택이 가득 차게 되어 StackOverFlow가 발생할 수 있다.
0부터 입력 n까지 홀수의 합을 더하는 재귀 함수를 만들어보세요.
function sumOdd(n){
if(n === 0) {
return 0;
}
if(n < 3) {
return 1;
}
// 재귀 로직
let isOdd = n%2 === 1;
if(isOdd) { // 홀수면
return n + sumOdd(n-2); // -2씩 하면서 더하기
} else { // 짝수면
return sumOdd(n-1); // 이전 홀수로 가서 계산
}
}
console.log(sumOdd(10)) // 25
console.log(sumOdd(1)) // 1
console.log(sumOdd(2)) // 1
console.log(sumOdd(3)) // 4
console.log(sumOdd(4)) // 4
다음 코드는 매개변수로 주어진 파일 경로(.는 현재 디렉토리)에 있는 하위 모든 파일과 디렉토리를 출력하는 코드입니다. 다음 코드를 재귀 함수를 이용하는 코드로 변경해보세요.
function traverseDirectory2(directory){
if(directory) {
console.log('디렉토리: ', directory);
const files = fs.readdirSync(directory);
for( const file of files){
const filePath = path.join(directory, file);
const fileStatus= fs.statSync(filePath);
if(fileStatus.isFile()){
console.log('파일: ', filePath);
} else {
traverseDirectory2(filePath);
}
}
}
}
traverseDirectory2("..");
댓글을 작성해보세요.