View
105
Download
3
Category
Preview:
Citation preview
Why Recursive?• 알고리즘 시험은 시간싸움 .
• 코드 간소화 .
• 스택을 구현할 필요가 없다 .
• 하지만 실제 개발할때 사용하면 개 발 . 시스템 과부하가 크다
재귀
int gcd(int parm_a, int parm_b){return b ? gcd(parm_b, parm_a
%parm_b) : parm_b;}
아까 만났던 그 녀석
• 함수가 Call-Stack 에 차곡차곡 쌓였다가 가장 늦게 들어온 녀석부터 빠져나간다 .
Stack
• 가장 기초적인 Data structure
• Push, Pop
• FILO(First In Last Out)
Stack
• 가장 기초적인 Data structure
• Push, Pop
• FILO(First In Last Out)
Push
Stack
• 가장 기초적인 Data structure
• Push, Pop
• FILO(First In Last Out)
Push
Stack
• 가장 기초적인 Data structure
• Push, Pop
• FILO(First In Last Out)
Push
Stack
• 가장 기초적인 Data structure
• Push, Pop
• FILO(First In Last Out)
Pop
Stack
• 가장 기초적인 Data structure
• Push, Pop
• FILO(First In Last Out)
Pop
Stack
• 가장 기초적인 Data structure
• Push, Pop
• FILO(First In Last Out)
Pop
재귀• 좀 더 착하게 생긴 녀석이랑 놀아보자
• int makeTen(int parm){if(parm<10){return makeTen(parm+1);}else if(parm>10){return makeTen(parm-1);}else{return parm;}
}
printf(“%d\n”,makeTen(5)); ==> 10
재귀는 이럴때 유용하다
• 좌우대칭 산모양
• 대칭 !
• Back tracking. 무언가를 찾아야 할 때 .
좌우대칭 산모양
• http://59.23.113.171/30stair/pTp/pTp.php?pname=pTp
• 재귀 ! 샌드위치를 잘 만들어 보세요 .
• 싫으면 알아서 잘 해보세요 . 김밥을 드시던가 .
좌우대칭 산모양 - CODE
N=3
CALL STACK
현재 위치
다시 시작
좌우대칭 산모양 - CODE
PUSH
CALL STACKrecursive(3);
좌우대칭 산모양 - CODE
recursive(3);
CALL STACK
3
좌우대칭 산모양 - CODE
PUSH
recursive(3);
CALL STACK
recursive(2);
3
좌우대칭 산모양 - CODE
CALL STACKrecursive(3);recursive(2);
2
좌우대칭 산모양 - CODE
PUSH
CALL STACKrecursive(3);recursive(2);
2
recursive(1);
좌우대칭 산모양 - CODE
CALL STACKrecursive(3);recursive(2);
1
recursive(1);
좌우대칭 산모양 - CODE
PUSH
CALL STACKrecursive(3);recursive(2);
1
recursive(1);recursive(0);
좌우대칭 산모양 - CODE
CALL STACK
0
recursive(3);recursive(2);recursive(1);recursive(0);
좌우대칭 산모양 - CODE
CALL STACK
0
recursive(3);recursive(2);recursive(1);recursive(0);
좌우대칭 산모양 - CODE
POP
CALL STACKrecursive(3);recursive(2);recursive(1);
좌우대칭 산모양 - CODE
CALL STACK
1
recursive(3);recursive(2);recursive(1);
좌우대칭 산모양 - CODE
CALL STACK
11
recursive(3);recursive(2);recursive(1);
좌우대칭 산모양 - CODE
PUSH
CALL STACK
11
recursive(0);
recursive(3);recursive(2);recursive(1);
좌우대칭 산모양 - CODE
CALL STACK
10
recursive(0);
recursive(3);recursive(2);recursive(1);
좌우대칭 산모양 - CODE
POP
CALL STACK
1
recursive(3);recursive(2);recursive(1);
좌우대칭 산모양 - CODE
CALL STACK
11
recursive(3);recursive(2);recursive(1);
좌우대칭 산모양 - CODE
CALL STACK
11
recursive(3);recursive(2);recursive(1);
좌우대칭 산모양 - CODE
POP
CALL STACK
1
recursive(5);recursive(4);recursive(3);recursive(2);
recursive(3);recursive(2);
좌우대칭 산모양 - CODE
CALL STACK
1
recursive(3);recursive(2);
2
좌우대칭 산모양 - CODE
CALL STACKrecursive(3);recursive(2);
212
좌우대칭 산모양 - CODE
CALL STACKrecursive(3);recursive(2);
2
PUSH
12
recursive(1);
좌우대칭 산모양 - CODE
CALL STACKrecursive(3);recursive(2);
112
recursive(1);
좌우대칭 산모양 - CODE
CALL STACKrecursive(3);recursive(2);
112
recursive(1);
PUSH
recursive(0);
좌우대칭 산모양 - CODE
CALL STACK
120
recursive(0);
recursive(3);recursive(2);recursive(1);
좌우대칭 산모양 - CODE
POP
CALL STACK
12
recursive(3);recursive(2);recursive(1);
좌우대칭 산모양 - CODE
CALL STACKrecursive(3);recursive(2);
112
recursive(1);
좌우대칭 산모양 - CODE
CALL STACKrecursive(3);recursive(2);
1121
recursive(1);0 생략
좌우대칭 산모양 - CODE
CALL STACKrecursive(3);recursive(2);
121
0 생략
POP
좌우대칭 산모양 - CODE
CALL STACKrecursive(3);recursive(2);
2121
좌우대칭 산모양 - CODE
CALL STACKrecursive(3);recursive(2);
2121
좌우대칭 산모양 - CODE
CALL STACKrecursive(3);
121
POP
좌우대칭 산모양 - CODE
recursive(3);
CALL STACK
3121
좌우대칭 산모양 - CODE
recursive(3);
CALL STACK
31213
좌우대칭 산모양 - CODE
recursive(3);
CALL STACK
31213
recursive(2);
PUSH
좌우대칭 산모양 - CODE
recursive(3);
CALL STACK
21213
recursive(2);
좌우대칭 산모양 - CODE
recursive(3);
CALL STACK
21213
recursive(2);recursive(1);
PUSH
좌우대칭 산모양 - CODE
recursive(3);
CALL STACK
11213
recursive(2);
0 생략recursive(1);
좌우대칭 산모양 - CODE
recursive(3);
CALL STACK
112131
recursive(2);recursive(1);
0 생략
좌우대칭 산모양 - CODE
recursive(3);
CALL STACK
112131
recursive(2);recursive(1);
좌우대칭 산모양 - CODE
recursive(3);
CALL STACK
12131
recursive(2);
POP
좌우대칭 산모양 - CODE
recursive(3);
CALL STACK
212131
recursive(2);
좌우대칭 산모양 - CODE
recursive(3);
CALL STACK
2121312
recursive(2);
좌우대칭 산모양 - CODE
recursive(3);
CALL STACK
1121312
recursive(2);recursive(1);
0 생략
좌우대칭 산모양 - CODE
recursive(3);
CALL STACK
11213121
recursive(2);recursive(1);
0 생략
좌우대칭 산모양 - CODE
recursive(3);
CALL STACK
11213121
recursive(2);recursive(1);
좌우대칭 산모양 - CODE
recursive(3);
CALL STACK
1213121
recursive(2);
POP
좌우대칭 산모양 - CODE
recursive(3);
CALL STACK
21213121
recursive(2);
좌우대칭 산모양 - CODE
recursive(3);
CALL STACK
21213121
recursive(2);
좌우대칭 산모양 - CODE
recursive(3);
CALL STACK
1213121
POP
좌우대칭 산모양 - CODE
recursive(3);
CALL STACK
31213121
좌우대칭 산모양 - CODE
recursive(3);
CALL STACK
31213121
좌우대칭 산모양 - CODE
CALL STACK
1213121
POP
좌우대칭 산모양 - CODE
1213121
좌우대칭 산모양 - CODE
1213121
다 그렸다 ..다 그렸다 ..
다 그렸다 ..
그냥 산 하나만 그려보자
그냥 산 하나만 그려보자
Recommended