์ค๋์ ์ ์ผ๋ก ์๋ก์ด ์๊ณ ๋ฆฌ์ฆ ๊ฐ๋ ์ ๋ํด ๋ฐฐ์๋ณด๋ ๋ ์ด์๋ค!
์ฌ๊ท(recursion)๋, ์์ ์ ์ ์ํ ๋ ์๊ธฐ ์์ ์ ํธ์ถํ๋ ๋ฐฉ๋ฒ์ ๋ปํ๋ฉฐ, ํ๋ก๊ทธ๋๋ฐ์ ํจ์์ ์์์ ๋ง์ด ์ฌ์ฉ๋๋ค.
def countdown(n):
print(n)
countdown(n-1)
countdown(10);
def countdown(n):
print(n)
countdown(n-1)
countdown(10);
์๋ฅผ๋ค๋ฉด, countdown ํจ์๋ ๋ฐ์ ์ธ์๋ฅผ ์ถ๋ ฅํ๋ค.
๊ทธ๋ฐ๋ฐ ์์ ํจ์๋ฅผ ์คํํ๋ฉด 10์์ ์์ํด์ ๋ฌดํ์ผ๋ก ๋ง์ด๋์ค ๊ฐ๊น์ง ๋ด๋ ค๊ฐ๋ค. (๋ง๋ ์๋์๋)
์ด๋ ๊ฒ ๋ ๋๊น์ง ํ๊ณ ๋๋ ์ํฉ์ ๋ฐฉ์งํ๊ธฐ ์ํด, ์ฌ๊ทํจ์๋ ์๋์ ์ ์ฐจ๊ฐ ๊ผญ ํ์ํ๋ค.
์ด๋ฅผ ๊ณ ๋ คํด 0์ด ๋๋ฉด ๋์ด์ ์ฌ๊ท๋ฅผ ์ด์ด๋๊ฐ์ง ์๋๋ก ์ข ๋ฃ ์กฐ๊ฑด์ ์ถ๊ฐํด๋ณด์.
def countdown(n):
print(n)
if (n == 0):
return None
countdown(n-1)
countdown(10);
์ฌ๊ท๋ฅผ ์ฌ์ฉํ์ฌ ํฉํ ๋ฆฌ์ผ(factorial)์ ๊ตฌํ๋ ํจ์๋ฅผ ๊ตฌํํด์ฃผ์ธ์.
: ํฉํ ๋ฆฌ์ผ์ด๋ 1์์๋ถํฐ n๊น์ง์ ์ ์๋ฅผ ๋ชจ๋ ๊ณฑํ๊ฒ์ ๋งํฉ๋๋ค.1! = 1 2! = 1 2 5! = 1 2 3 4 * 5
def factorial(n):
if (n == 0):
return 1
return n * factorial(n-1)
1~n๊น์ง์ ๋ชจ๋ ์ ์๋ฅผ ๊ณฑํ ๊ฒ์ ๋ฆฌํด๋ณด๋ด๊ธฐ ๋๋ฌธ์,
0์ผ ๊ฒฝ์ฐ์ ๋ํ ์ข
๋ฃ ์กฐ๊ฑด๋ง ์ถ๊ฐํด์ฃผ๋ฉด ๋๋ค.
์์ง ์ฌ๊ท ์๊ณ ๋ฆฌ์ฆ์ ๋ํ ์ดํด๊ฐ ๋ถ์กฑํ ์ํ์ด๊ธฐ ๋๋ฌธ์, ๋ ์ ๊ณต๋ถํด๋ณด์์ผ ํ ๊ฒ ๊ฐ๋ค.. ใ ใ