56. 재귀함수(4)
57. 재귀함수(5)
58. 중복 재귀함수(1)
59. 중복 재귀함수(2)
60. 중복 재귀함수(3)
56. 재귀함수(4)
ㅁ 문제
- my(5, 14)
i = 5, j = 14
i = 4가 됨. j는 13이 됨. <- j 빼기 1이 아니라 i다.
j는 10이 됨.
출력."4, 10, "
메인 함수에 my(4, 10)을 리턴함.
메인 함수에서 my(4, 10) 수행.
- my(4, 10)
i = 4, j = 10
i = 3이 됨. j는 7이 됨.
출력. "3, 7, "
메인 함수에 my(3, 7)를 리턴함.
메인 함수에서 my(3, 7) 수행.
- my(3, 7)
i = 3, j = 7
i = 2가 됨. j는 5가 됨.
출력. "2, 5, "
메인 함수에 my(2, 5)를 리턴함.
메인 함수에서 my(2, 5) 수행.
- my(2, 5)
i = 2, j = 5
i와 j가 1이 되고 함수 종료.
- 출력결과
"4, 10, 3, 7, 2, 5, "
57. 재귀함수(5)
ㅁ 문제
- recursion(16)
리턴. 16 + recursion(15)
메인에서 recursion(15) 수행.
- recursion(15)
recursion(14) 수행
- recursion(14)
recursion(13) 수행
- recursion(13)
recursion(12) 수행
- recursion(12)
recursion(11) 수행
- recursion(11)
리턴. 11 + recursion(10)
메인에서 recursion(10) 수행.
- recursion(10)
recursion(9) 수행
- recursion(9)
recursion(8) 수행
- recursion(8)
recursion(7) 수행
- recursion(7)
recursion(6) 수행
- recursion(6)
리턴. 6 + recursion(5)
메인에서 recursion(5) 수행.
- recursion(5)
recursion(4) 수행
- recursion(4)
리턴 1
- 출력결과. 34
58. 중복 재귀함수(1)
ㅁ 문제
- recur(3, 2)
a = 3, b = 2 지역변수 선언.
리턴. 3 * recur(2, 3) + recur(2, 2)
첫번째 두번째
[첫번째]
- recur(2, 3)
a = 2, b = 3 지역변수 선언.
리턴. 2 * recur(1, 4) + recur(1, 3)
- recur(1, 4)
a = 1, b = 4 지역변수 선언.
리턴. 4
- recur(1, 3)
a = 1, b = 3 지역변수 선언.
리턴. 3
[두번째]
- recur(2, 2)
a = 2, b = 2 지역변수 선언.
리턴. 2 * recur(1, 3) + recur(1, 2)
- recur(1, 3)
a = 1, b = 3 지역변수 선언.
리턴. 3
- recur(1, 2)
a = 1, b = 2 지역변수 선언.
리턴. 2
- 3 * 11 + 8 = 41
출력결과. 41
59. 중복 재귀함수(2)
ㅁ 문제
- sub(4)
리턴. sub(3) + sub(2)
첫번째 두번째
[첫번째]
- sub(3)
리턴. sub(2) + sub(1)
- sub(2)
리턴. sub(1) + sub(0)
- sub(1)
리턴. 1
- sub(0)
리턴. 0
[두번째]
- sub(2)
리턴. sub(1) + sub(0)
- sub(1)
리턴. 1
- sub(0)
리턴. 0
- 2 + 1 = 3
60. 중복 재귀함수(3)
ㅁ 문제
- fib(5) 호출 <- 호출 1
리턴. fib(4) + fib(3)
첫번째 두번째
[첫번재]
- fib(4) 호출 <- 호출 2
리턴. fib(3) + fib(2) <- 1번 호출이 아님.
- fib(3) 호출 <- 호출 3
리턴. fib(2) + fib(1)
- fib(2) 호출 <- 호출 4
리턴. fib(1) + fib(0)
- fib(1) 호출 <- 호출 5
리턴. 1
- fib(0) 호출 <- 호출 6
리턴. 0
- fib(1) 호출 <- 호출 7
- fib(2) 호출 <- 호출 8
- fib(1) 호출 <- 호출 14
- fib(0) 호출 <- 호출 15
- 첫번째 fib(4)는 3
[두번째]
- fib(3) 호출 <- 호출 9
리턴. fib(2) + fib(1)
- fib(2) 호출 <- 호출 10
리턴. fib(1) + fib(0)
- fib(1) 호출 <- 호출 11
리턴. 1
- fib(0) 호출 <- 호출 12
리턴. 0
- fib(1) 호출 <- 호출 13
- 두번째 fib(3)은 2
- fib(5)는 5, fib()가 호출되는 횟수는 13 <- 15
'깨알 c언어' 카테고리의 다른 글
깨알 c언어 특강 01 ~ 03 (0) | 2024.03.11 |
---|---|
깨알 c언어 ch.51 ~ 55 (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 |