상식닷컴
로그인
가입하기
2026년 상식닷컴 선정 식당 & 카페 리스트
2025년 2026년 신상 호텔 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요
일주일 식단표 어플
자동 일주일 식단표 어플
안드로이드
아이폰
주식 & 코인 차트의 신
1000만원으로 2000만원 만들기 프로젝트
궁금한 상식 보기
세금 납부용 통장을 따로 두어야 하는가?
공동 생활비 통장은 어떻게 운영해야 하는가?
해외에서 구매한 구글 기프트카드도 사용할 수 있나요?
구글 기프트카드 등록 후 바로 사용할 수 있나요?
이득도 없는데 거짓말하는 심리는 뭘까?
거짓말을 자주 하면 신뢰 회복이 가능할까?
벽걸이 에어컨 청소 준비물은 무엇인가요?
벽걸이 에어컨 청소 비용이 너무 싼 업체 괜찮나요?
노인 요양원 정부 지원은 어떤 것이 있나요?
노인 요양원 선택 시 가장 중요한 기준은 무엇인가요?
노인 요양원에서 종교 활동도 가능한가요?
대상포진 예방접종은 언제 맞는 것이 가장 좋나요?
Previous
Next
수정하기 - 자바스크립트에서 함수의 재귀(Recursion)란 무엇인가요?
닉네임
비밀번호
제목
내용
[이미지 업로드는 권한이 있는 사람만 가능. 하단 카톡으로 연락]
<a href='https://sangseek.com/sangseeks/재귀/ko'>재귀</a>(Recursion)란 함수가 자기 자신을 호출하는 프로그래밍 기법을 의미합니다. <a href='https://sangseek.com/sangseeks/자바/ko'>자바</a>스크립트와 같은 프로그래밍 언어에서 재귀는 특정 문제를 해결하기 위해 문제를 더 작은 하위 문제로 나누고, 그 하위 문제를 해결하기 위해 동일한 함수를 반복적으로 호출하는 방식으로 이루어집니다. 재귀는 특히 반복적인 구조를 간결하게 표현할 수 있는 장점이 있습니다. 재귀의 기본 구조 재귀 함수는 일반적으로 두 가지 주요 요소로 구성됩니다: 1. 기저 사례(Base Case) : 재귀 호출을 종료하는 조건입니다. 이 조건이 충족되면 함수는 더 이상 자기 자신을 호출하지 않고 결과를 반환합니다. 기저 사례는 재귀 함수가 무한 루프에 빠지지 않도록 보장하는 중요한 요소입니다. 2. 재귀 사례(Recursive Case) : 함수가 자기 자신을 호출하는 부분입니다. 이 부분에서 문제를 더 작은 하위 문제로 나누고, 그 하위 문제를 해결하기 위해 재귀적으로 함수를 호출합니다. 재귀의 예 가장 흔한 재귀의 예 중 하나는 <a href='https://sangseek.com/sangseeks/팩토리얼/ko'>팩토리얼</a>(factorial) 계산입니다. 팩토리얼은 자연수 n에 대해 n! = n × (n-1)!로 정의됩니다. 이를 재귀적으로 구현하면 다음과 같습니다: ```javascript function factorial(n) { if (n === 0) { // 기저 사례 return 1; } else { // 재귀 사례 return n * factorial(n - 1); } } console.log(factorial(5)); // 120 ``` 위의 코드에서 `factorial` 함수는 n이 0일 때 1을 반환하며, 그렇지 않으면 n과 `factorial(n - 1)`의 곱을 반환합니다. 이 과정은 n이 0이 될 때까지 반복됩니다. 재귀의 장점과 단점 장점: 1. 코드의 <a href='https://sangseek.com/sangseeks/간결성/ko'>간결성</a> : 재귀를 사용하면 반복적인 구조를 간단하게 표현할 수 있어 코드가 더 읽기 쉬워집니다. 2. 문제 해결 : 복잡한 문제를 간단한 하위 문제로 나누어 해결할 수 있어, 특히 트리 구조나 그래프 탐색과 같은 문제에 효과적입니다. 단점: 1. 성능 문제 : 재귀 호출은 함수 호출 스택을 사용하므로, 깊은 재귀 호출이 발생할 경우 스택 오버플로우(Stack Overflow) 오류가 발생할 수 있습니다. 이는 메모리 사용량을 증가시키고 성능 저하를 초래할 수 있습니다. 2. 비효율성 : 일부 재귀 알고리즘은 동일한 하위 문제를 여러 번 계산할 수 있어 비효율적일 수 있습니다. 이 경우 메모이제이션(Memoization) 기법을 사용하여 중복 계산을 피할 수 있습니다. 재귀와 반복의 차이 재귀는 함수가 자기 자신을 호출하는 방식으로 문제를 해결하는 반면, 반복은 루프(예: for, while)를 사용하여 문제를 해결합니다. 두 방법 모두 특정 문제를 해결할 수 있지만, 재귀는 더 직관적이고 간결하게 문제를 표현할 수 있는 반면, 반복은 메모리 사용 측면에서 더 효율적일 수 있습니다. 결론 재귀는 자바스크립트에서 강력하고 유용한 프로그래밍 기법입니다. 적절한 기저 사례와 재귀 사례를 설정하면 복잡한 문제를 간단하게 해결할 수 있습니다. 그러나 재귀를 사용할 때는 성능과 메모리 사용에 주의해야 하며, 필요에 따라 반복 구조를 고려하는 것도 좋은 접근 방법입니다.
이용안내
커뮤니티 이용안내
×
- 게시한 게시글로 발생하는 문제는 게시자에게 책임이 있습니다.
- 게시글이 타인/타업체의 저작권을 침해할 경우 모든 책임은 게시자에게 있습니다. 게시자가 모든 손해를 부담해야 합니다.
- 상식닷컴 운영자는 게시자와 상의하지 않고 게시글을 수정 또는 삭제할 수 있습니다.
- 상식닷컴 운영자는 깨끗한 커뮤니티 공간을 만드는 것이 1순위입니다.
수정하기
취소하기