자바스크립트의 재귀

재귀의 개념은 위협적으로 들리지만 믿을 수 없을 정도로 간단합니다.

먼저, 용어입니다.

MDN 웹 문서는 재귀를 다음과 같이 정의합니다.

The act of a function calling itself, recursion is used to solve problems that contain smaller sub-problems. A recursive function can receive two inputs: a base case (ends recursion) or a recursive case (resumes recursion).



숫자를 인수로 사용하여 "num"매개변수를 사용하여 "recursiveFunction"이라는 함수를 만들어 보겠습니다. "num"이 10보다 작으면 함수는 num + 1에서 자신을 호출하여 새 값이 10보다 작은지 확인합니다.

"num"의 값이 10보다 작지 않으면 "else"문이 실행되고 console.log "num"이 실행됩니다.

코드가 예상대로 실행되도록 하기 위해 "if"문에도 console.log를 추가합니다.

function recursiveFunction(num){
    if (num < 10) {
        console.log(`Number = ${num}. recursiveFunction will be called.`)
        recursiveFunction(num+1)
    } else {
        console.log(`Number = ${num}. Recursion terminated.`)
    }
}


추상적으로 재귀는 불필요하게 장황하게 보일 수 있습니다. 그러나 코드가 더 복잡해지면 재귀는 코드를 깨끗하게 유지합니다.

예를 들어, 하드 코딩된 배열에서 임의의 가사를 표시하기 위해 창을 사용하는 React 애플리케이션용 재귀 함수를 만들었습니다.

function randomLyric(array) {
    let random = array[Math.floor(Math.random()*array.length)];
    if (lyric !== random) {
        setLyric(random);
    } else {
        randomLyric(array)
    }
}


"if"문은 "random"변수에 저장된 무작위로 가져온 가사가 상태 변수 "lyric"에 이미 저장된 가사와 다른지 확인합니다. 실제로 다른 경우 setter 함수 setLyric을 사용하여 상태 변수 "lyric"을 임의의 가사로 업데이트합니다.

그러나 두 가사가 정확히 동일하면(즉, 무작위로 가져온 가사가 이미 표시되고 있는 경우) "else"블록 내부의 재귀가 실행되고 동일한 배열에서 randomLyric 함수를 호출하여 프로세스를 반복할 때까지 무작위로 생성된 가사는 실제로 무작위입니다.

간단한 재귀 함수를 직접 만들어보십시오. 특정 조건이 충족되면 스스로를 호출하는 함수의 효용을 보면 절대 뒤돌아보지 않을 것입니다.

글쎄, 당신은 할 것이지만 재귀 적으로만.

행복한 코딩.

좋은 웹페이지 즐겨찾기