ํค์๋
- ์ํ์ ์ฌ๊ณ
- ์ฌํธ์ถ ๋ก์ง
- ์ฌ๊ท ํธ์ถ -> ์คํ์ ๊ฐ๋ (ํจ์ ๋ด๋ถ)
- ๋ฒ ์ด์ค ์ผ์ด์ค
- ์ถ๊ฐ ์กฐ๊ฑด
์ฌ๊ท(Recursion)
- ์๊ธฐ ์์ ์ ์ฌํธ์ถ ํ๋ ๊ฒ, ์ข ๋ฃ ์กฐ๊ฑด์ด ์ถฉ์กฑ๋ ๋๊น์ง ๋ฐ๋ณต ์ํ
- ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ์ฌํธ์ถ ๋ก์ง ๊ธฐ์ต(์ถ๊ฐ ์กฐ๊ฑด)
- ์ฌ๊ทํจ์๋ฅผ ๋ฉ์ถ๋ base case(๋ฐ๋ณต์ ์ค์งํ๋ ์กฐ๊ฑด)
- ํ์ ๋ฌธ์ ๋ฅผ ์ฝ๊ฒ ํด๊ฒฐํ ์ ์์ ๋๊น์ง ๋ ์์ ํ์ ๋ฌธ์ ๋ก ๋๋๋ ๊ฒ
์ฌ๊ท ์์
def sum_list(items):
if len(items) == 1:
return items[0] # base case -> ์ฌ๊ทํจ์ ์ข
๋ฃ
else:
return items[0] + sum_list(items[1:]) # ์ถ๊ฐ ์กฐ๊ฑด -> ์ฌํธ์ถ ๋ก์ง
[์ฌ๊ท] ์กฐ๊ฑด
- base case(๊ธฐ๋ณธ ์ผ์ด์ค)๊ฐ ์์ด์ผ ํ๋ค.
- ์ถ๊ฐ ์กฐ๊ฑด์ ๋์ด ๊ธฐ๋ณธ ์ผ์ด์ค์์ ์ฐจ์ด๋ฅผ ํ์ธํ๋ค.
- ๋ฐ๋์ ์๊ธฐ ์์ ์ ํธ์ถํ๋ค.(์ถ๊ฐ ์กฐ๊ฑด์์ ์ฌํธ์ถ)
[์ฌ๊ท] ํจ์์ ์ฝ์คํ
- ์ฌ๊ท ํธ์ถ์ ์คํ์ ๊ฐ๋
์ด ์ ์ฉ๋์ด ํจ์ ๋ด๋ถ๋ ๋ง์น ์คํ์ฒ๋ผ ํ์
์ ์ถ(LIFO)๋ก ๊ด๋ฆฌ๋๋ค.
(๋ ๋จ๊ณ ์ ๋ด์ผ๋จ)
์์)
# ํ์ด์ฌ ํจ์ ์ฝ์คํ ์์
def multi_table_2(n):
if n == 0:
print('๊ตฌ๊ตฌ๋จ 2๋จ')
else:
multi_table_2(n-1) # ์ด ๋ถ๋ถ์์ ํจ์๊ฐ ์คํ์ฒ๋ผ ์์(์ฆ, multi_table_2(9)๊ฐ ์ ์ผ ์๋์ ์์)
print(f"2 * {n} = {2 * n}")
multi_table_2(9)
์์ ์ถ๋ ฅ)
๊ตฌ๊ตฌ๋จ 2๋จ
2 * 1 = 2
2 * 2 = 4
2 * 3 = 6
2 * 4 = 8
2 * 5 = 10
2 * 6 = 12
2 * 7 = 14
2 * 8 = 16
2 * 9 = 18
[์ฌ๊ท] ์ ํ
- ์ฌ๊ท๋ฅผ ์ฌ์ฉํ๋ฉด ์คํ ๋ฉ๋ชจ๋ฆฌ์ ๊ณ์ ํจ์๊ฐ ์์ด๊ฒ ๋๋๋ฐ ํ์ด์ฌ์์๋ ์ด ๋ฉ๋ชจ๋ฆฌ๋ฅผ 1000์คํ์ ๊ธฐ๋ณธ์ผ๋ก ํ๊ณ ์๋ค.
์ด ๊ธฐ๋ณธ 1000์ ๋์ด๊ฐ๋ฉด ์๋ฌ๊ฐ ๋ฐ์, -> ์ด๊ฒ ๊ทธ ์ ๋ช ํ '์คํ์ค๋ฒํ๋ก์ฐ' ์ฌ์ดํธ ์ด๋ฆ์ ์ ๋
import sys
sys.setrecursionlimit(3500)
- ์์ ์ฝ๋๋ฅผ ํตํด ์ฌ๊ท ์คํ์ ๋ ๋๋ ค์ค ์ ์์(์์ ๊ฒฝ์ฐ 3500๊น์ง ๋๋ ค์ค ์์)
'๐ฟ Data > ๋ถํธ์บ ํ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[TIL] 99. [์๊ณ ๋ฆฌ์ฆ] ์ ๋ ฌ (0) | 2022.04.06 |
---|---|
[TIL] 98. [์๋ฃ๊ตฌ์กฐ] ํธ๋ฆฌ (0) | 2022.04.05 |
[TIL] 96. ์ถ์ ์๋ฃํ(Abstract Data Type ; ADT) (0) | 2022.04.04 |
[TIL] 95. python ์๋ฃ๊ตฌ์กฐ ๋ฐ ์๊ณ ๋ฆฌ์ฆ ๊ธฐ๋ณธ (0) | 2022.03.31 |
[TIL] 94. python OOP (0) | 2022.03.30 |