재귀함수 학습 목표
재귀함수란 ?
함수가 스스로 함수 자신을 반환하는 동작 원리를 갖는다.
(1) 문제를 작게 쪼개기
(2) 문제를 가장 작은 단위로 쪼개기
(3) 문제 해결하기
(1) 불필요하게 여러 개의 반복문 사용하지 않기 때문에, 코드 간결 + 수정 용이하다.
(2) 변수 여러 개 사용할 필요가 없다.
(1) 코드의 흐름을 직관적으로 파악하기 어렵다.
(2) 반복하여 메서드를 호출하며 지역변수, 매개변수, 반환값을 모두 process stack에 저장한다.
--> 반복문에 비해서 더 많은 메모리를 사용하게 된다.
(3) 메서드를 호출하고 메서드가 종료된 이후에 복귀를 위한 컨텍스트 스위칭 비용이 발생하게 된다.
(1) 주어진 문제를 비슷한 구조의 더 작은 문제로 나눌 수 있는 경우
(2) 중첩된 반복문이 많거나 반복문의 중첩 횟수(number of loops)를 예측하기 어려운 경우
(3) 변수 사용을 줄여 mutable state(변경 가능한 상태)를 제거하여 프로그램 오류가 발생할 수 있는 가능성을 줄이는 경우
(4) 재귀 호출이 종료되는 시점이 존재해야 한다.