์ฌ๊ทํจ์(Recursive function) : ์๊ธฐ ์์ ์ ๋ถ๋ฅด๋ ํจ์
๋ฆฌ์คํธ(List) : ๋์ ์ธ ๋ฐฐ์ด (ํํ(tuple) : ์ ์ ์ธ ๋ฐฐ์ด)
LIFO : Last in Fisrt out
์คํ(stack) : ์ผ์ข ์ ๋ฐ๋ฅ์ด ๋งํ ์์ ํน์ ๋๋ฏธ, ๋์ค์ ๋ฃ์ ๋ฌผ๊ฑด์ ๋์ค์ ๊บผ๋ผ ์ ๋ฐ์ ์๋ ๊ตฌ์กฐ,
LIFO(Last In First Out) ๋ผ๊ณ ๋ ํ๋ค.
์ฌ๊ทํจ์๋ฅผ ์ด์ฉํด์ ์ด ์คํ๊ตฌ์กฐ๋ฅผ ๊ตฌํํ๊ฒ ์ต๋๋ค. (Push๋ ์๋ฃ๋ฅผ ์ ๋ ฅ, Pop์ ์๋ฃ๋ฅผ ์ถ๋ ฅ)
#์ฌ๊ทํจ์๋ฅผ ์ด์ฉํ ์คํ๊ตฌ์กฐ
def stack(start , end):
if start <= end:
print('Push :', start)
stack(start + 1, end)
print("Pop :", start)
else:
print("--------")
stack(0, 5)
#๊ฒฐ๊ณผ
Push : 0
Push : 1
Push : 2
Push : 3
Push : 4
Push : 5
--------
Pop : 5
Pop : 4
Pop : 3
Pop : 2
Pop : 1
Pop : 0
์งง์ ์ฝ๋ฉ์ด์ง๋ง, ์กฐ๊ธ์ ์๊ฐํด์ผ ํฉ๋๋ค.
List๋ฅผ ์ด์ฉํ์ฌ ๊ฐ๋จํ ์คํ๊ตฌ์กฐ๋ฅผ ๊ตฌํํ ์ ์์ต๋๋ค.
#List๋ฅผ ์ด์ฉํ ์คํ๊ตฌ์กฐ
data_stack = list()
for i in range(10):
data_stack.append(i)
print('Push :', data_stack)
for i in range(10):
data_stack.pop()
print('Pop :', data_stack)
#๊ฒฐ๊ณผ
Push : [0]
Push : [0, 1]
Push : [0, 1, 2]
Push : [0, 1, 2, 3]
Push : [0, 1, 2, 3, 4]
Push : [0, 1, 2, 3, 4, 5]
Push : [0, 1, 2, 3, 4, 5, 6]
Push : [0, 1, 2, 3, 4, 5, 6, 7]
Push : [0, 1, 2, 3, 4, 5, 6, 7, 8]
Push : [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Pop : [0, 1, 2, 3, 4, 5, 6, 7, 8]
Pop : [0, 1, 2, 3, 4, 5, 6, 7]
Pop : [0, 1, 2, 3, 4, 5, 6]
Pop : [0, 1, 2, 3, 4, 5]
Pop : [0, 1, 2, 3, 4]
Pop : [0, 1, 2, 3]
Pop : [0, 1, 2]
Pop : [0, 1]
Pop : [0]
Pop : []
์ข ๋ ์ง๊ด์ ์ด๊ณ , ๊ฐ๋จํ ๋ฐฉ๋ฒ์ผ๋ก ์คํ๊ตฌ์กฐ๋ฅผ ๊ตฌํํ ์ ์์ต๋๋ค.
์คํ๊ตฌ์กฐ๋ ๋ง์ ๊ณณ์์ ์ฌ์ฉ๋ฉ๋๋ค.
์๋์ฐ์์ Ctrl+Z, ๋ธ๋ผ์ฐ์ ์ ๋ค๋ก ๊ฐ๊ธฐ ๋ฑ ์คํ๊ตฌ์กฐ๋ก ๋์ํฉ๋๋ค.
๊ฐ๋จํ ๊ตฌ์กฐ์ด์ง๋ง, ๋ง์ด ์ฐ์ด๊ธฐ ๋๋ฌธ์ ๋ฐ๋์ ์์์ผ ํ๋ ๊ตฌ์กฐ์ ๋๋ค.