재귀

                   -Why use Recursion
                   -The Call Stack 
                   -Helper Method Recursion

재귀를 사용하는 이유



루프를 사용하지 않고 프로그램에서 반복을 만들 수 있는 또 다른 기회가 있습니다. 재귀는 함수가 계속해서 자신을 호출하는 프로세스이기 때문에 그렇게 할 수 있습니다.


호출 스택



호출 스택은 스택 데이터 구조입니다. 함수가 호출될 때마다 호출 스택의 맨 위에 배치되거나 푸시됩니다.
JavaScript가 return 키워드를 보거나 함수가 종료되면 컴파일러가 제거되거나 꺼집니다.

호출 스택 예


function takeShower(){
    return "Showering!"
}

function eatBreakfast(){
    let meal = cookFood()
    return `Eating ${meal}`
}

function cookFood(){
    let items = ["Oatmeal", "Eggs", "Protein Shake"]
    return items[Math.floor(Math.random()*items.length)];
}
function wakeUp() {
    takeShower()
    eatBreakfast()
    console.log("Ok ready to go to work!")
}

wakeUp()





function countDown(num){
    if(num <= 0) {
        console.log("All done!");
        return;
    }
    console.log(num);
    num--;
    countDown(num);
}
countDown(3)

// Iterative Version
function countDown(num){
    for(var i = num; i > 0; i--){
        console.log(i);
    }
    console.log("All done!")
}



도우미 메서드 재귀





function collectOddValues(arr){

    let result = [];

    function helper(helperInput){
        if(helperInput.length === 0) {
            return;
        }

        if(helperInput[0] % 2 !== 0){
            result.push(helperInput[0])
        }

        helper(helperInput.slice(1))
    }

    helper(arr)

    return result;
}

collectOddValues([1,2,3,4,5,6,7,8,9])

좋은 웹페이지 즐겨찾기