재귀함수 3

재귀함수 -> 꼬리물기 재귀함수 -> 반복문

재귀함수를 꼬리 재귀 함수로 변환하고, 그 다음 반복문으로 변환하는 것은 재귀 호출을 명시적인 반복 구조로 바꾸는 과정입니다. 꼬리 재귀는 함수의 마지막 작업이 자기 자신을 호출하는 형태로, 이론적으로는 반복문으로 쉽게 변환할 수 있습니다.꼬리 재귀를 반복문으로 바꾸는 이유는 스택오버플로우 때문입니다.그렇게 때문에 꼬리재귀함수 와 반복문간의 코드 변환은 자유자재로 할수 있어야 합니다.재귀함수 문제 중에서 다른 문제로는 다음과 같은 것들이 있습니다.https://www.youtube.com/watch?v=h80tLv0fn88&list=PLBNdLLaRx_rKOFzA3txlG5rf9ZaVUuvmv&index=210분정도 후 부터 tail recursion 보시면 됩니다. 1. 피보나치 수열피보나치 수열은 각..

알고리즘 2024.08.20

[es6] 배열의 합 (꼬리물기 재귀함수 <--> for문으로 변경)

아래 두개의 코드는 두 가지 다른 방법으로 배열의 합을 계산하는 두 가지 함수를 포함하고 있습니다. 하나는 꼬리물기재귀(tail recursion)를 사용하고 다른 하나는 for 루프를 사용합니다. 각 함수와 코드 블록에 대한 설명은 다음과 같습니다: 꼬리물기 재귀함수 const _sum = (arr, i, acc) => i > -1 ? _sum(arr, i-1, acc = acc + arr[i]) : acc; const sum = (arr) => _sum(arr, arr.length-1, 0); console.log('꼬리물기재귀 : '+ sum([1,2,3,4])); _sum 함수는 재귀 함수로, 배열 arr, 현재 인덱스 i, 및 합산기 acc를 받습니다. 재귀적으로 배열을 합산하며, i가 -1보다..

프로그래밍/Js 2023.10.17

[es6] 꼬리물기 최적화 (재귀함수)

"꼬리물기 최적화"는 프로그래밍에서 재귀 함수의 성능을 최적화하는 기법 중 하나입니다. 이 기법은 재귀 함수가 끝날 때 함수 호출 스택에서 이전 호출들을 제거하여 스택 오버플로우를 방지하고 메모리 사용을 최적화합니다. 꼬리물기 최적화의 핵심 아이디어는 "꼬리 재귀" 함수를 작성하는 것입니다. 꼬리 재귀 함수는 재귀 호출이 함수의 마지막 작업으로 수행되는 경우를 의미합니다. 따라서 꼬리 재귀 함수를 호출하면 현재 함수 호출 스택에 남아 있는 정보가 필요하지 않습니다. 이를 통해 스택을 계속해서 쌓지 않고 재귀 함수를 최적화할 수 있습니다. 꼬리물기 최적화의 예시를 살펴보겠습니다. 아래는 1부터 10까지 더하기 계산하는 재귀 함수의 비효율적인 버전과 꼬리 재귀 버전입니다. 비효율적인 재귀함수 const su..

프로그래밍/Js 2023.10.05