재귀(recursion)라는 말은 되풀이(recurring)에서 유래했는데, 이는 계속해서 과거로 돌아가는 것을 의미합니다. 재귀 함수는 입력을 단계별로 변경하여 자신을 계속해서 호출하는 함수입니다. 여기서 입력을 한 단계 변경한다는 것은 입력을 한 단계 줄이거나 늘리는 것을 의미합니다.
재귀 함수가 기본 조건에 도달할 때마다 자체 실행을 중지합니다. 예를 통해 기본 조건이 무엇인지 알아보겠습니다. 예를 들어, 숫자의 계승을 찾아야 합니다. 입력을 1씩 감소시켜 계승 함수를 호출하고 입력이 1에 도달할 때마다 중지해야 합니다. 따라서 여기서는 1이 기본 조건이 됩니다.
사용자는 다음 구문을 사용하여 JavaScript의 재귀를 이해할 수 있습니다.
으아아아위 구문에서 사용자는 기본 조건이 true가 되면 null을 반환하여 함수 실행을 중지하는 것을 볼 수 있습니다. 기본 조건이 false인 경우 입력 값으로 일부 작업을 수행하고 새 매개 변수 값으로 recur() 함수를 다시 호출합니다.
이제 재귀의 다양한 예를 살펴보겠습니다. 여기서는 먼저 for 루프를 사용하여 반복 알고리즘을 구현한 다음 이를 재귀 메서드로 변환하는 방법을 알아봅니다.
아래 예에서는 1부터 N까지의 숫자의 합을 구하는 sumOfN() 함수를 작성했습니다. N 반복에 대해 for 루프를 사용하고 각 반복마다 I 값을 합계 변수에 추가합니다.
마지막으로 합계 변수의 값을 반환합니다.
으아아아위의 예에서는 반복 방법을 사용하여 N개 숫자의 합을 구했습니다. 이제 재귀적 방법을 사용하여 동일한 작업을 수행하겠습니다.
sumOfN() 함수는 아래 예의 재귀 함수입니다. 인수 값을 1씩 감소시켜 sumOfN() 함수를 반복적으로 호출합니다. sumOfN(N1)은 N-1개 숫자의 합을 반환합니다. 여기에 N을 더해 N개 숫자의 합을 구합니다. N의 값이 1이 될 때마다 함수 실행을 중지하는 기본 조건으로 1을 반환합니다.
으아아아위의 재귀 함수가 어떻게 작동하는지 이해해 봅시다. 아래에서 사용자는 재귀 함수 호출이 어떻게 발생하는지 단계별로 배울 수 있습니다.
으아아아아래 예에서는 문자열 배열을 만들었습니다. 배열의 모든 문자열을 하나의 문자열로 병합하기 위해 mergeString() 함수를 만들었습니다. for 루프를 사용하여 배열을 반복하고 모든 문자열을 "str" 변수에 하나씩 병합합니다.
으아아아아래 예에서는 mergeString() 함수를 재귀 함수로 변환했습니다. 배열의 첫 번째 요소를 가져와 mergeString() 함수의 반환 결과와 병합합니다. mergeString() 함수는 병합 후 마지막 n-1 배열 요소를 반환합니다. 추가적으로, 우리는 배열에서 첫 번째 요소를 제거하기 위해 Slice() 메소드를 사용합니다.
배열에 요소가 하나만 남아 있는 경우 기본 조건과 동일한 요소를 반환합니다.
으아아아주요 질문은 어떤 방법이 더 나은지, 반복적인지, 재귀적인지, 그리고 사용자가 어떤 방법을 사용해야 하는지입니다.
어떤 경우에는 반복 방법이 재귀 방법보다 빠릅니다. 또한 재귀에는 반복 중에 더 많은 메모리가 필요합니다. 분할 및 정복과 같은 일부 알고리즘의 경우 재귀 방법을 사용하여 더 적은 코드를 작성해야 하기 때문에 재귀가 더 유용합니다. 또한 재귀 메서드에서 기본 조건이 트리거되지 않으면 사용자는 메모리 누수 문제에 직면할 수 있습니다.
코드를 더 작은 부분으로 나눌 수 있다면 재귀적 방법을 사용해야 하고, 코드의 성능을 향상하려면 반복적 방법을 사용해야 합니다.
위 내용은 JavaScript의 재귀를 이해하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!