💸딱 하루, 인프런 천원샵 오픈!

[인프런 워밍업 클럽 스터디 3기] 2주차 미션 - 자료구조와 알고리즘

[인프런 워밍업 클럽 스터디 3기] 2주차 미션 - 자료구조와 알고리즘

재귀함수에서 기저조건을 만들지 않거나 잘못 설정했을 때 어떤 문제가 발생할 수 있나요?


재귀함수가 계속 본인을 호출하면서 콜 스택이 가득 차게 되어 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("..");

댓글을 작성해보세요.


채널톡 아이콘