자바스크립트: 재귀가 뭐야?
소개
JavaScript 함수는 JavaScript 프로그래밍의 기본 빌딩 블록 중 하나입니다. 함수는 단순히 특정 작업을 수행하도록 설계된 코드 블록으로 정의됩니다. 일반적으로 함수는 일반적으로 입력을 받고 출력을 반환합니다. 함수의 한 유형은 재귀 함수입니다.
재귀가 정확히 무엇입니까?
컴퓨터 과학에서 재귀는 자체 코드 내에서 자신을 호출하는 함수 프로세스입니다. 이 개념은 JavaScript를 포함한 많은 프로그래밍 언어에서 사용됩니다. 이것을 반복(for/while 루프)의 대안으로 생각할 수 있습니다. 일반적인 경험 법칙은 재귀를 사용하여 코드를 더 읽기 쉽게 만드는 것이지만 때때로 반복하는 것보다 덜 효율적일 수 있습니다. 재귀가 도움이 될 수 있는 예는 이진 검색 트리를 통과하는 것과 같은 검색 및 정렬 알고리즘에 사용할 수 있다는 것입니다.
재귀의 4단계:
재귀 함수는 4단계로 구성됩니다.
function recursiveFunc(n) {
if(n === 3) { // Base Case
return n // Return when base case has been met
}
console.log(n)
return recursiveFunc(n + 1) // Recrusive Case
}
재귀 함수가 호출될 때마다 함수 자체가 호출 스택에 추가됩니다. 이러한 함수는 기본 사례가 충족되면 호출 스택에서 제거됩니다. 기본 사례를 구현하지 않으면 재귀 함수가 무한히 호출되고 이러한 함수는 메모리 제한에 도달하고 응용 프로그램이 충돌할 때까지 호출 스택에 계속 추가됩니다. 이것을 "스택 오버플로"라고 합니다.
왜 사용합니까?
때때로 우리는 직접 해결하기에는 너무 복잡한 문제에 직면합니다. 우리는 문제를 더 작고 반복적인 조각으로 분해하여 재귀를 사용합니다. 우리는 이러한 작은 조각들을 해결한 다음 전체 문제에 대한 솔루션을 백업할 수 있습니다.
예를 들어, 트리 데이터 구조로 작업할 때 트리가 얼마나 깊은지, 트리 전체에서 얼마나 많은 루프를 통과해야 하는지 확신할 수 없을 때 재귀를 사용하여 트래버스하는 것이 유용할 수 있습니다.
재귀 vs 반복(루핑)
위에서 설명한 것처럼 재귀는 루핑의 대안으로 사용할 수 있습니다. 재귀는 항상 루프로 구현할 수 있지만 경우에 따라 재귀를 사용하는 것이 더 간단합니다. 재귀를 사용하는 큰 이점은 for 루프를 사용하는 것보다 더 우아하여 읽고 디버그하기가 더 쉽다는 것입니다. 반복이 더 빠르고 공간 복잡성이 중요한 경우 재귀가 사용하기에 더 나쁜 옵션이 될 수 있다는 점에 유의하는 것이 중요합니다.
아래 예에서 볼 수 있듯이 for 루프와 재귀 방법을 모두 사용하여 피보나치 수열에 대한 함수를 구현하고 있습니다. 이 예제에서 재귀 함수가 덜 복잡하고 읽기 쉽기 때문에 왜 더 나은 접근 방식인지 알 수 있습니다.
function fibonacciIterative(n) {
let array = [0, 1]
for (let i =2; i < n +1; i++) {
array.push(array[i - 1] + array[i - 2])
}
return array[n]
}
function fibonacciRecursive(n) {
if(n < 2) {
return n
}
return fibonacciRecursive(n - 1) + fibonacciRecursive(n - 2)
}
결론:
재귀 자체는 머리를 감싸는 데 약간의 고통이 될 수 있지만 실제로 사용하면 놀라운 이점이 있으므로 조사하고 익숙해지는 데 시간을 할애하십시오.
장점:
단점:
연결
링크드인 —
포트폴리오 - https://www.adamoreilly.com/
Reference
이 문제에 관하여(자바스크립트: 재귀가 뭐야?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/aor2405/javascript-what-the-is-recursion-3770
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(자바스크립트: 재귀가 뭐야?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/aor2405/javascript-what-the-is-recursion-3770텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)