일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- 겁나 많아
- 컴퓨터
- 기계어
- 소프트웨어 시대
- 절차적 사고의 장점
- 절차적 사고
- 선택
- 공부정리
- 뿌..
- 미래 사회의 단위
- 운영체제의 미래
- 해결 방안
- 소프트웨어
- 반복 구조 찾기
- 운영체제 목적
- gensim 3.7.3 설치 오류
- 장치에 할당할 수 없는 NET ID Broadcast주소
- 프로그래밍
- 앨런 튜링
- 국립과천과학관
- 레지스터
- 운영체제 서비스
- 운영체제의 기능 1. 자원 관리 기능 2. 시스템 보호 3. 네트워크(통신 기능)
- 딥러닝
- 출력
- 패킷트레이서 이용
- 말 인용
- 운영체제의 발달 과정
- 순서도
- 처리
- Today
- Total
hye-_
53강 ~ 57강 | 재귀함수 본문
53강 | 재귀함수 (1)
자료 출처 - 깨알 C언어 | 53. 재귀함수 (1) (youtube.com)
재귀함수
함수 내에서 자기의 함수를 다시 호출하는 함수
스택 내에 차곡차곡 쌓아두었다가 일괄로 처리를 한다.
main()
i=
5; for 5>=0 참 if 5%2==1 참 printf funuc(5) : func(i) 함수호출 출력 func(5) : 120
num=5
if(5==1) 거짓 else return 5 * func(num-1); 함수호출 = 5 * 24 = 120
num=4
if(4==1) 거짓 else return 4 * func(num-1);
함수호출= 4 * 6 = 24
num=3
if(3==1) 거짓 else return 3 * func(num-1); 함수호출 =3 * 2 = 6
num=2
if(2==1) 거짓 else return 2 * func(num-1); 함수호출 = 2 * 1 = 2
num=1
if(1==1) 참 return 1
4; for 4>=0 참 if 4%2==1 거짓
3; for 3>=0 참 if 3%2==1 참 prinft func(3) : func(i) 함수호출 출력 func(3) : 6
num=3
if(3==1) 거짓 else return 3 * func(num-1) 함수호출 = 3 * 2 = 6
num=2
if(2==1) 거짓 else return 2 * func(num-1);
함수호출 = 2 * 1 = 2
num=1
if(1==1) 참 return 1
2; for 2>=0 참 if 2%2==1 거짓
1; for 1>=0 참 if 1%2==1 참 printf func(1) : func(i) 함수호출 출력 func(1) : 1
num=1
if(1==1) 참 return 1
0; for 0>=0 참 if 0%2==1 거짓
-1; for -1>=0 거짓
답
func(1) : 1
54강 | 재귀함수 (2)
자료 출처 - 깨알 C언어 | 54. 재귀함수 (2) (youtube.com)
main()
result=f(123); 함수호출 출력 6
n=123 정수 나누기 정수는 정수
if (123>0) 참 return 123 % 10 + f(123/10); 함수호출 =3+3
n=12
if (12>0) 참 return 12 % 10 + f(12/10); 함수호출 =2+1
n=1
if (1>0) 참 return 1 % 10 + f(1/10); 함수호출=1+0
n=0
if (0>0) 거짓 else return 0;
출력
6
55강 | 재귀함수 (3)
자료 출처 - 깨알 C언어 | 55. 재귀함수 (3) (youtube.com)
main()
result=func(19); 함수호출 =90
n=19
if (19%2==1) 참 n=19-1 if (18==0) 거짓 return (func(18-2)+18) 함수호출 = 72+18
n=16
if (16%2==1) 거짓 if (16==0) 거짓 return (func(16-2)+16)
함수호출 =56+16
n=14
if (14%2==1) 거짓 if (14==0) 거짓 return (func(14-2)+14) 함수호출 =42+14
n=12
if (12%2==1) 거짓 if (12==0) 거짓 return (func(12-2)+12) 함수호출 =30+12
n=10
if(10%2==1)거짓 if (10==0) 거짓
return (func(10-2)+10) 함수호출 =20+10
n=8
if (8%2==1) 거짓 if(8==0) 거짓 return (func(8-2)+8 함수호출 =12+8
n=6
if (6%2==1) 거짓 if(6==0) 거짓 return (func(6-2)+6) 함수호출 =6+6
n=4
if (4%2==1) 거짓 if((4==0) 거짓
return (func(4-2)+4) 함수호출 =2+4
n=2
if (2%2==1) 거짓 if (2==0) 거짓 return (func(2-2)+2) 함수호출 =0+2
n=0
if (0%2==1) 거짓 if (0==0) 참 return 0
출력
result=90
56강 | 재귀함수 (4)
자료 출처 - 깨알 C언어 | 56. 재귀함수 (4) (youtube.com)
main()
my(5,14); 함수호출
i=5, j=14
if (5<3) 거짓 else i=5-1, j=14-4 printf 4, 10 return my(4,10); 함수호출
i=4, j=10
if (4<3) 거짓 else i=4-1, j=10-3 printf 3, 7 return my(3,7); 함수호출
i=3, j=7
if (3<3) 거짓 else i=3-1, j=7-2 printf 2,5 return my(2,5); 함수호출
i=2, j=5
if (2<3) 참 i=j=1;
출력
4, 10, 3, 7, 2, 5
57강 | 재귀함수 (5)
자료 출처 - 깨알 C언어 | 57. 재귀함수 (5) (youtube.com)
main()
n=recursion(16); 함수호출 = 34
n=16
if (16<5) 거짓 else if (16%5==1) 참 return 16 + recursion(16-1); 함수호출 = 16+18
n=15
if (15<5) 거짓 else if (15%5==1) 거짓 else recursion(15-1); 함수호출=18
n=14
if (14<5) 거짓 else if (14%5==1) 거짓 else recursion(14-1); 함수호출 = 18
n=13
if (13<5) 거짓 else if (13%5==1) 거짓 else recursion(13-1); 함수호출 = 18
n=12
if (12<5) 거짓 else if (12%5==1) 거짓 else recursion(12-1); 함수호출 = 18
n=11
if (11<5) 거짓 else if (11%5==1) 참 return 11+recursion(11-1); 함수호출 = 11+7
n=10
if (10<5) 거짓 else if (10%5==1) 거짓 else recursion(10-1); 함수호출 =7
n=9
if (9<5) 거짓 else if (9%5==1) 거짓 else recursion(9-1) 함수호출
n=8
if (8<5) 거짓 else if (8%5==1) 거짓 else recursion(8-1); 함수호출 =7
n=7
if (7<5) 거짓 else if (7%5==1) 거짓 else recursion(7-1); 함수호출 =7
n=6
if (6<5) 거짓 else if (6%5==1) 참
return 6+recursion(6-1); 함수호출 =6+1
n=5
if (5<5) 거짓 else if (5%5==1) 거짓 else recursion(5-1); 함수호출 =1
n=4
if (4<5) 참 return 1
출력
34
'언어 > C언어_기초' 카테고리의 다른 글
c언어 printf 출력순서 (0) | 2024.02.28 |
---|---|
58강 ~ 60강 | 중복 재귀함수 (0) | 2024.02.28 |
52강 | STATIC 변수 (4) (0) | 2024.02.27 |
51강 | STATIC 변수 (3) (0) | 2024.02.27 |
50강 | STATIC 변수 (2) (0) | 2024.02.27 |