[알고리즘] 재귀함수

newsilver·2021년 8월 9일
0

Algorithm

목록 보기
12/30

재귀 함수

재귀 함수란 어떤 함수에서 자신을 다시 호출하여 작업을 수행하는 방식의 함수이다.

🚨 함수 내에서 다시 자신을 호출한 후 그 함수가 끝날 때 까지 함수 호출 이후의 명령문이 수행되지 않는다는 사실과 종료조건이 꼭 포함되어야 한다는 부분을 인지하고 작성하면 무한루프를 방지할 수 있다.

✏️ 자연수 N이 입력되면 재귀함수를 이용하여 1부터 N까지를 출력하는 프로그램을 작성해보자.

예시로 N을 3이라고 하자.

위 코드처럼 작성한다면 3부터 1까지 출력될 것이다.
🙋🏻‍♀️ 나는 1부터 3까지 반대로 출력하고 싶어!
그렇다면 recursive(i-1);을 console.log 보다 먼저 작성해주면 된다.

왜 코드 순서만 바꿔주어도 결과가 반대로 나오는지 알아보자!
1. i가 3일때, recursive(3)의 정보를 stack에 삽입한다.
(stack에는 매개변수, 지역변수, 함수호출,복귀 정보가 저장된다.)
2. recursive(i-1);을 만나 그 다음의 console.log를 실행하지 않고 자기 자신인 recursive(2)를 호출한다.
3. i가 2일때, recursive(2);의 정보를 stack에 삽입한다.
4. recursive(1)을 호출
5. i가 1일때, recursive(1)의 정보를 stack에 삽입한다.
6. i가 0일때, 함수를 종료한다.
7. console.log(i);을 실행한다.
8. stack 상단의 recursive(1)을 출력하며 복귀 주소인 recursive(2)로 이동한다.
9. stack의 모든 정보를 꺼낼 때 까지 8번 과정을 반복하여 실행한다.


✏️ 문제 출처

https://www.inflearn.com/course/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EB%AC%B8%EC%A0%9C%ED%92%80%EC%9D%B4/dashboard

profile
이게 왜 🐷

0개의 댓글