51. STATIC 변수(3)
52. STATIC 변수(4)
53. 재귀함수(1)
54. 재귀함수(2)
55. 재귀함수(3)
51. STATIC 변수(3)
ㅁ 문제
- 출력결과
F1 = 2, F2 = 6, F3 = 2, F4 = 3
52. STATIC 변수(4)
ㅁ 문제
- 첫번째 func()
a는 101이 됨. b는 201이 됨.
전역변수 c는 30에서 101이 됨.
- 두번째 func()
a는 102가 됨. b는 201이 됨.
전역변수 c는 101에서 102가 됨.
- 출력
a= 10, b=20, c=102
-
static이 선언된 함수는 func에서 선언이 되었다.
static한 a는 func에서만 사용할 수 있다.
main함수는 func의 a를 사용할 수 없다.
정적변수는 지역변수와 전역변수의 특징을 다 갖는다.
선언된 함수 내에서만 사용 가능하다는 점에서 지역변수의 특성.
함수가 종료되도 메모리에 남는다는 점에서 전역변수의 특성.
53. 재귀함수(1)
ㅁ 재귀함수
- 함수 내에서 자기의 함수(나)를 다시 호출하는 함수
- 스택 내에 차곡차곡 쌓아두었다가 일괄로 처리를 한다.
ㅁ 문제
1) i=5
5%2 == 1은 참.
func(5) : func(5)의 값 출력.
- func(5)
거짓이므로 5 * fun(4) 리턴
- func(4)
거짓이므로 4 * func(3) 리턴
- func(3)
거짓이므로 3 * func(2) 리턴
- func(2)
거짓이므로 2 * func(1) 리턴
- func(1)
참이므로 1을 리턴함.
- func(2)
2를 리턴
- func(3)
6을 리턴
- func(4)
24를 리턴
- func(5)
120을 리턴
출력. func(5) :120
2) i=4
if 조건이 거짓
3) i=3
3%2 == 1은 참.
출력. func(3) : 6
4) i=2
if 조건이 거짓
5) i=1
1을 2로 나누면 몫이 0 나머지 1 <- 1을 2로 나눌 수가 없으므로.
출력. func(1) : 1
6) i=0
0을 2로 나누면 몫이 0 나머지 0
- 분자가 0인건 되지만 분모가 0인건 안된다.
- 4를 2로 나누면 몫은 2 나머지는 0, 2를 4로 나누면 몫은 0 나머지는 2
54. 재귀함수(2)
ㅁ 문제
1) f(123)
리턴은 3 + f(12) <- 정수 나누기 정수는 정수다. 이 때 반올림 안하고 소수점 아래는 그냥 버린다.
2) f(12)
리턴은 2 + f(1)
3) f(1)
리턴은 1 + f(0) <- 0.몇이므로 그냥 0
4) f(0)
리턴은 0
- f(1)의 값은 1
- f(12)의 값은 3
- f(123)의 값은 6
55. 재귀함수(3)
ㅁ 문제
- func(19)
19%2 == 1은 참.
n=18이 됨
18 == 0은 거짓.
리턴 func(16)+18
- func(16)
16%2 == 1은 거짓.
16 == 0은 거짓.
리턴 func(14)+16
- func(14)
14%2 == 1은 거짓.
14 == 0은 거짓.
리턴 func(12)+14
- func(12)
12%2 == 1은 거짓.
12 == 0은 거짓.
리턴 func(10)+12
- func(10)
10%2 == 1은 거짓.
10 == 0은 거짓.
리턴 func(8) + 10
- func(8)
8%2 == 1은 거짓.
8 == 0은 거짓.
리턴 func(6) + 8
- func(6)
6%2 == 1은 거짓.
6 == 0은 거짓.
리턴 func(4) +6
- func(4)
4%2 == 1은 거짓.
4 == 0은 거짓.
리턴 func(2) + 4
- func(2)
2%2 == 1은 거짓.
2 == 0은 거짓.
리턴 func(0) + 2
- func(0)
0%2 == 1은 거짓.
0 == 0은 참.
리턴 0
- result=90
- 0은 짝수.
'깨알 c언어' 카테고리의 다른 글
깨알 c언어 특강 01 ~ 03 (0) | 2024.03.11 |
---|---|
깨알 c언어 ch.56 ~ 60 (0) | 2024.03.11 |
깨알 c언어 ch.46 ~ 50 (0) | 2024.03.10 |
깨알 c언어 ch.41 ~ 45 (0) | 2024.03.10 |
깨알 c언어 ch.36 ~ 40 (0) | 2024.03.09 |