[알고리즘] 문제풀이 연습
[알골90제] 56번 - 재귀함수 분석 : STACK 이용
ddgoori
2019. 7. 31. 12:27
*문제
자연수 N이 주어지면 재귀함수를 이용해서 아래와 같이 출력하시오.
스택을 이용하는 재귀함수
입력
3
출력
1 2 3
*코드구현
// 56번 - 재귀함수 (기본)
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <algorithm>
#include <vector>
#include <stack>
using namespace std;
//반환하는 건 아니고 출력함수라서 void
void recur(int x) {
if (x == 0) return; //종료지점
else {
recur(x - 1);
printf("%d ", x);
}
}
int main() {
int n;
scanf("%d", &n);
recur(n);
}
* 주의!
//recur과 printf의 순서를 바꾸면
//1 2 3 => 3 2 1 됨
//c언어는 stack을 이용해서 재귀하기때문
D(3) - 9라인까지 했다고 스택에 저장
D(2) - 9라인까지 했다고 스택에 저장
....
=> 9라인에서 재귀되니깐
함수가 자기 할 일을 다 했다면 스택에서 빠져나간다.
스택에 있는 최 상단에 있는 것들이 실행된다.
D(1) - 9 라인까지 했으니, 10라인인 printf 이후 마저 끝내고 스택에서 빠져 나감