- ์ฌ๊ท๋ ํจ์๊ฐ ์๊ธฐ ์์ ์ ํธ์ถํ ๋๋ฅผ ๋ปํ๋ ์ฉ์ด๋ค.
1. ๋ฃจํ ๋์ ์ฌ๊ท
- ๋ฃจํ๋ฅผ ์ฌ์ฉํ ์ ์๋ ๊ฒฝ์ฐ๋ผ๋ฉด ๊ฑฐ์ ๋๋ถ๋ถ ์ฌ๊ท๋ ์ธ ์ ์๋ค.
- ์ฌ๊ท๋ฅผ ์ธ ์ ์๋ค๊ณ ํด์ ๋ฌด์กฐ๊ฑด ์ฌ๊ท๋ฅผ ์จ์ผ ํ๋ค๋ ๊ฒ์ ์๋๋ค.
- ์ฌ๊ท๋ ๋ช ์พํ ์ฝ๋๋ฅผ ์์ฑํ ์ ์๋ ํ๋์ ๋๊ตฌ๋ค.
2. ๊ธฐ์ ์กฐ๊ฑด
- ๊ธฐ์ ์กฐ๊ฑด(base case): ํจ์๊ฐ ๋ฐ๋ณต๋์ง ์๋ ๊ฒฝ์ฐ
- ๋ชจ๋ ์ฌ๊ท ํจ์์๋ ํจ์๊ฐ ๋ฌดํ๋๋ก ํธ์ถ๋์ง ์๊ฒ ํ๋ ๊ธฐ์ ์กฐ๊ฑด์ด ์ ์ด๋ ํ๋ ์์ด์ผ ํ๋ค.
3. ์ฌ๊ท ์ฝ๋ ์ฝ๊ธฐ
- ์ฌ๊ท ์ฝ๋๋ฅผ ์ฝ๋ ๋ฐฉ๋ฒ
- ๊ธฐ์ ์กฐ๊ฑด์ ์ฐพ๋๋ค.
- ๊ธฐ์ ์กฐ๊ฑด์์ ํจ์๊ฐ ์ด๋ป๊ฒ ๋์ํ๋์ง ์ดํด๋ณธ๋ค.
- “๋์์ ๋ ๋ฒ์งธ” ์กฐ๊ฑด์ ์ฐพ๋๋ค. ๊ณง ๋ณด์ด๊ฒ ์ง๋ง ์ด๋ ๊ธฐ์ ์กฐ๊ฑด ๋ฐ๋ก ์ ์กฐ๊ฑด์ด๋ค.
- “๋์์ ๋ ๋ฒ์งธ” ์กฐ๊ฑด์์ ํจ์๊ฐ ์ด๋ป๊ฒ ๋์ํ๋์ง ์ดํด๋ณธ๋ค.
- ๋ฐฉ๊ธ ๋ถ์ํ ์กฐ๊ฑด์ ๋ฐ๋ก ์ ์กฐ๊ฑด์ ์ฐพ์๊ฐ๋ฉฐ ์ ์ ์ฐจ๋ฅผ ๋ฐ๋ณตํ๊ณ ๊ทธ ๋๋ง๋ค ํจ์๊ฐ ์ด๋ป๊ฒ ๋์ํ๋์ง ์ดํ๋ค.
- ๊ธฐ์ ์กฐ๊ฑด๋ถํฐ ๋ถ์์ ์์ํด์ ๋์๊ฐ๋ ๊ฒ์ ์ฌ๊ท ์ฝ๋๋ฅผ ์ถ๋ก ํ๋ ํ๋ฅญํ ๋ฐฉ๋ฒ์ด๋ค.
4. ์ปดํจํฐ์ ๋์ผ๋ก ๋ฐ๋ผ๋ณธ ์ฌ๊ท
- ์ปดํจํฐ์์ ์ฌ๊ท๋ ๊น๋ค๋กญ๋ค.
- ์์ง factorial(3) ์ ๋ค ์คํํ์ง ์์๋๋ฐ factorial(3) ์ ์คํํ๋ ์ค์ factorial(2) ์คํ์ ์์ํด์ผ ํ๋ค.
4.1 ํธ์ถ ์คํ
- 9์ฅ ์คํ๊ณผ ํ๋ก ๊ฐ๊ฒฐํ ์ฝ๋ ์์ฑ์์ ์คํ์ ๋ฐฐ์ ๋ค.
- ์ปดํจํฐ๋ ์คํ์ ์ฌ์ฉํด ์ด๋ค ํจ์๋ฅผ ํธ์ถ ์ค์ธ์ง ๊ธฐ๋กํ๋ค.
- ์ด ์คํ์ ๋ชฉ์ ์ ๋ฑ ๋ง๊ฒ ํธ์ถ ์คํ(call stack)์ด๋ผ ๋ถ๋ฅธ๋ค.
- ์คํ์๋ ๊ฐ์ฅ ์์ ์์๋ง popํ ์ ์๋ค๋ ์ ์ฝ์ด ์๋ค.
- ๊ฐ์ฅ ์์ ์์๋ ๊ฐ์ฅ ์ต๊ทผ์ ํธ์ถ๋ ํจ์, ์ฆ ์ปดํจํฐ๊ฐ ๋ค์์ผ๋ก ๋ง๋ฌด๋ฆฌํด์ผ ํ ํจ์์ด๋ ์ด๋ฐ ์ ์ฝ์ ์ฌ๊ท์ ์ด์์ ์ด๋ค.
- ๋ง์ง๋ง์(์ฆ ๊ฐ์ฅ ์ต๊ทผ์) ํธ์ถํ๋ ํจ์๋ฅผ ๊ฐ์ฅ ๋จผ์ ์๋ฃํด์ผ ํ๋ฏ๋ก LIFO์ ๋ง์ ๋จ์ด์ง๋ค.
- factorial ํจ์๋ ์ฌ๊ท์ ๊ธฐ๋ฐํด ์ด๋ฃจ์ด์ง๋ ๊ณ์ฐ์ด๋ค.
- factorial(1)์ด ์์ ์ ๊ฒฐ๊ณผ๋ฅผ factorial(2)์ ์ ๋ฌํ๊ณ , factorial(2)๊ฐ ์์ ์ ๊ฒฐ๊ณผ๋ฅผ factorial(3)์ ์ ๋ฌํจ์ผ๋ก์จ ์ด๋ค์ง๋ค.
- ์ด๋ฌํ ๋ฐฉ๋ฒ์ ํธ์ถ ์คํ์ ํตํด ๊ฐ ์๋ก ์ ๋ฌํ๊ธฐ ๋ผ๊ณ ๋ถ๋ฅด๊ธฐ๋ ํ๋ค.
- passing a value up through the call stack
- ๊ฐ ์ฌ๊ท ํจ์๋ ๊ณ์ฐ๋ ๊ฐ์ “๋ถ๋ชจ”ํจ์์ ๋ฐํํ๋ค.
4.2 ์คํ ์ค๋ฒํ๋ก์ฐ
- ๋ฌดํ ์ฌ๊ท์์๋ ์ปดํจํฐ๊ฐ ๋ฐ๋ณตํด์ ๊ฐ์ ํจ์๋ฅผ ํธ์ถ ์คํ์ ํธ์ํ๋ค.
- ๋จ๊ธฐ ๋ฉ๋ชจ๋ฆฌ์ ๋ ์ด์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ๊ณต๊ฐ์ด ์์ ๋๊น์ง ํธ์ถ ์คํ์ ์ ์ ๋์ด๋๋ค.
- ๊ฒฐ๊ตญ ์คํ ์ค๋ฒํ๋ก์ฐstack overflow๋ผ๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค.
5. ํ์ผ์์คํ ์ํ
- ์ฌ๊ท์ ์ ๋ง๋ ๋ฌธ์ ์ ํ์ ๋ช ๋จ๊ณ๋ ๊น์ด ๋ค์ด๊ฐ์ผ ํ๋์ง ๋ชจ๋ฅด๋ ์ํฉ์์ ๋ฌธ์ ๋ฅผ ์ฌ๋ฌ ๋จ๊ณ๋ก ํ๊ณ ๋ค์ด์ผ ํ ๋๋ค.
- ํ์ผ ์์คํ
์ ์ํํ๋ ์์ ๋ฅผ ์ดํด๋ณด์.
- ๋๋ ํ ๋ฆฌ์ ํ์ ๋๋ ํ ๋ฆฌ, ๊ทธ ํ์ ๋๋ ํ ๋ฆฌ์ ํ์ ๋๋ ํ ๋ฆฌ๊ฐ ๋ ์์ผ๋ฉด ๋์ผํ ์์ ์ ์ํํด์ผ ํ ๋
- 18์ ์์ ๋ค์ ํ ๋ฒ ์ดํด๋ณธ๋ค.
6. ๋ง๋ฌด๋ฆฌ
- ์๊ณ ๋ฆฌ์ฆ์ด ์์์ ๋จ๊ณ๋งํผ ๊น์ด ๋ค์ด๊ฐ์ผ ํ๋ค๋ฉด ์ฌ๊ท๊ฐ ์ข์ ๋ฐฉ๋ฒ์ผ ์ ์๋ค.
'๐๏ธ ์ฑ & ๊ฐ์ ์ ๋ฆฌ > ๐๏ธ ๋๊ตฌ๋ ์๋ฃ๊ตฌ์กฐ์ ์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
12์ฅ ๋์ ํ๋ก๊ทธ๋๋ฐ (0) | 2022.12.08 |
---|---|
11์ฅ ์ฌ๊ท์ ์ผ๋ก ์์ฑํ๋ ๋ฒ (0) | 2022.12.07 |
9์ฅ ์คํ๊ณผ ํ๋ก ๊ฐ๊ฒฐํ ์ฝ๋ ์์ฑ (0) | 2022.11.18 |
8์ฅ ํด์ ํ ์ด๋ธ๋ก ๋งค์ฐ ๋น ๋ฅธ ๋ฃฉ์ (0) | 2022.11.18 |
6์ฅ ๊ธ์ ์ ์ธ ์๋๋ฆฌ์ค ์ต์ ํ (0) | 2022.11.04 |