๐ก ์ฌ๊ทํจ์๋? ์๊ธฐ ์์ ์ ๋ค์ ํธ์ถํ๋ ํจ์
def recursive_function():
print('์ฌ๊ท ํจ์๋ฅผ ํธ์ถํฉ๋๋ค.')
recursive_function()
recursive_function()
'์ฌ๊ท ํจ์๋ฅผ ํธ์ถํฉ๋๋ค' ๋ผ๋ ๋ฌธ์์ด์ ๋ฌดํํ ํธ์ถํ๋ค.
โ๏ธ ์ฌ๊ทํจ์์ ์ข ๋ฃ ์กฐ๊ฑด
์ฌ๊ท ํจ์๋ฅผ ๋ฌธ์ ํ์ด์์ ์ฌ์ฉํ ๋๋ ์ฌ๊ท ํจ์๊ฐ ์ธ์ ๋๋ ์ง, ์ข ๋ฃ ์กฐ๊ฑด์ ๊ผญ ๋ช ์ํด์ผ ํ๋ค.
def recursive_function(i):
if i == 100 : return
print(i, '๋ฒ์งธ ์ฌ๊ท ํจ์์์', i + 1, '๋ฒ์งธ ์ฌ๊ท ํจ์๋ฅผ ํธ์ถํฉ๋๋ค.')
recursive_function(i + 1)
print(i, '๋ฒ์งธ ์ฌ๊ท ํจ์๋ฅผ ์ข
๋ฃํฉ๋๋ค.')
recursive_function(1)
์ปดํจํฐ ๋ด๋ถ์์ ์ฌ๊ทํจ์์ ์ํ์ ์คํ ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ด์ฉํ๋ค.
ํจ์๋ฅผ ๊ณ์ ํธ์ถํ์ ๋ ๊ฐ์ฅ ๋ง์ง๋ง์ ํธ์ถํ ํจ์๊ฐ ๋จผ์ ์ํ์ ๋๋ด์ผ ๊ทธ ์์ ํจ์ ํธ์ถ์ด ์ข ๋ฃ๋๊ธฐ ๋๋ฌธ์ด๋ค.
์ฌ๊ท ํจ์๋ฅผ ์ด์ฉํ๋ ๋ํ์ ์ธ ์๋ก ํฉํ ๋ฆฌ์ผ ๋ฌธ์ ๊ฐ ์๋ค.
โ๏ธ ๋ฐ๋ณต์ ์ผ๋ก ๊ตฌํ
def factorial_iterative(n):
result = 1
for i in range(1, n + 1):
result *= i
return result
factorial_iterative(5) # 120
โ๏ธ ์ฌ๊ท์ ์ผ๋ก ๊ตฌํ
def factorial_recursive(n):
if n <= 1:
return 1
return n * factorial_recursive(n-1)
factorial_recursive(5) # 120
์ฌ๊ท ํจ์๋ ์ํ์ ์ ํ์์ ๊ทธ๋๋ก ์์ค์ฝ๋๋ก ์ฎ๊ฒจ ๋ ๊ฐ๊ฒฐํ๋ค.
์ ํ์์ ํน์ ํ ํจ์๋ฅผ ์์ ๋ณด๋ค ๋ ์์ ๋ณ์์ ๋ํ ํจ์์์ ๊ด๊ณ๋ก ํํํ ๊ฒ์ด๋ค.
์ํ์ ์ ํ์
1) n์ด 0 ํน์ 1 ์ผ ๋ : factorial(n) = 1
2) n์ด 1๋ณด๋ค ํด ๋ : factorial(n) = n * factorial(n-1)
'n์ด 0 ํน์ 1 ์ผ ๋'์ ๊ฐ์ด ์ข ๋ฃ ์กฐ๊ฑด์ ์ฐพ์ ์ ์๋ค.
์ฌ๊ท ํจ์ ๋ด์์ ํน์ ์กฐ๊ฑด์ผ ๋ ๋ ์ด์ ์ฌ๊ท์ ์ผ๋ก ํจ์๋ฅผ ํธ์ถํ์ง ์๊ณ ์ข ๋ฃ๋๋๋ก if๋ฌธ์ ์ด์ฉํ์ฌ ๊ผญ ์ข ๋ฃ ์กฐ๊ฑด์ ๊ตฌํํด์ฃผ์ด์ผ ํ๋ค.
'Algorithm > Python' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Python] ํ๋ก๊ทธ๋๋จธ์ค - ํํ (0) | 2024.03.14 |
---|---|
[Python] DFS ๊น์ด ์ฐ์ ํ์ (0) | 2024.03.13 |
[Python] ์๋ฃ๊ตฌ์กฐ - ์คํ, ํ (0) | 2024.03.12 |
[Python] BFS ์๊ณ ๋ฆฌ์ฆ (0) | 2023.12.20 |
[Python] ์ด์ง ํ์ ์๊ณ ๋ฆฌ์ฆ (1) | 2023.11.20 |