์๋ฃ๊ตฌ์กฐ: ์ฌ๊ท ์๊ณ ๋ฆฌ์ฆ(Recursive Algorithms) ๊ธฐ์ด, ์์ฉ
์ฌ๊ท ์๊ณ ๋ฆฌ์ฆ(Recursive algorithms) - ๊ธฐ์ด
- ์ฌ๊ท ํจ์๋?
- ํ๋์ ํจ์์์ ์์ ์ ๋ค์ ํธ์ถํ์ฌ ์์ ์ ์ํ
- ๋ง์ ์ข
๋ฅ์ ๋ฌธ์ ๊ฐ ์ฌ๊ท์ ์ผ๋ก ํด๊ฒฐ ๊ฐ๋ฅ
- ์ด์ง ํธ๋ฆฌ(Binary trees)
- ์์ฐ์์ ํฉ ๊ตฌํ๊ธฐ
- ์ข ๊ฒฐ ์กฐ๊ฑด(trivial case)์ด ๋งค์ฐ ์ค์ํจ
- ์ฌ๊ท ์๊ณ ๋ฆฌ์ฆ์ ํจ์จ
- ์๊ณ ๋ฆฌ์ฆ์ ๋ณต์ก๋ ์ธก๋ฉด๊ณผ ํจ์จ์ฑ ์ธก๋ฉด
ํผ๋ณด๋์น ์์ด
ํผ๋ณด๋์น ์์ด ์ฌ๊ท์ ๋ฐฉ๋ฒ
def fibonacci(x):
if x == 0:
return 0
elif x == 1:
return 1
else:
return fibonacci(x-1) + fibonacci(x-2)
๋ฌธ์ ์ค๋ช ์์ ํผ๋ณด๋์น ์์ด์ ๋ํ ์ ์๊ฐ ์ฃผ์ด์ก๊ณ , ์ฌ๋ฌ ๋ฒ ์์ฑํด๋ณธ ์ ์ด ์๋ ์ฝ๋๋ผ์ ์์ฑํ๋ ๋ฐ ํฐ ์ด๋ ค์์ ๋๋ผ์ง ์์๋ค. ๊ทธ๋๋ ์ฌ๋ฌ ๋ฒ์ ์ฝ๋ ๋ฐ๋ณต ์์ฑ๊ณผ ์์ผ๋ก ๋๋ฒ๊น ํ๋ ๊ฑธ ๋ง์ด ์ฐ์ตํด์ผ ํ ๊ฑฐ ๊ฐ๋ค.
line2 ~ line5๋ ๋ ์งง๊ฒ ๊ณ ์น ์ ์๋ค๋ ๊ฑธ ์์๋ค.
if n <= 1:
return n
ํผ๋ณด๋์น ์์ด ๋ฐ๋ณต์ (iterative) ๋ฐฉ๋ฒ
def solution(x):
if x == 0:
return 0
elif x == 1:
return 1
else:
F0 = 0
F1 = 1
idx = 2
while idx <= x:
Fn = F0 + F1
F0, F1 = F1, Fn
idx += 1
answer = Fn
return answer
์จ์ ํ ์ค์ค๋ก ํ์๋ค๊ณ ํ๊ธฐ์๋ ๋ฌด๋ฆฌ๊ฐ ์๊ณ , ๋ค๋ฅธ ์ฌ๋์ ์ฝ๋๋ฅผ ์ฐธ์กฐํ๋ค.
์ฌ๊ท ์๊ณ ๋ฆฌ์ฆ(Recursive algorithms) - ์์ฉ
- ์กฐํฉ์ ์ ๊ณ์ฐ
- ํจ์จ์ฑ ์ธก๋ฉด ์๊ฐํ๊ธฐ
- ์ฌ๊ท ์๊ณ ๋ฆฌ์ฆ์ ์ ์ฉ์ฑ
- ํ๋ ธ์ด์ ํ
- ์ฌ๊ท ์๊ณ ๋ฆฌ์ฆ์ ํจ์จ
- ํผ๋ณด๋์น ์์ด์ ๊ฒฝ์ฐ ๋ถํ์ํ ํจ์ ํธ์ถ๋ก ์ธํ ์ฑ๋ฅ ์ ํ ๋ฐ์
์ฌ๊ท์ ์ด์ง ํ์
์ฒ์์ ์ ์ถํ๋ ๋ต์ ํจ์จ์ฑ ํ
์คํธ์์ ํ๋ ธ๋ค. ๊ทธ๋์ ๋์ ๋๊ฐ์ด ํ๋ฆฐ ์ฌ๋์ ์ง๋ฌธ ๊ธ์์ ๋ต๋ณ์ ๋ณด๊ณ ์ฝ๋๋ฅผ ๊ณ ์ณค๋ค. ๋ด๊ฐ ํ๋ฆฐ ๋ถ๋ถ์ ๋ฆฌ์คํธ์ ์ฐพ๋ ๊ฐ์ด ์์ ๋ -1
์ ๋ฐํํ๋ ๋ถ๋ถ์ด์๋ค. ๋๋ ๋จ์ํ lower
์ upper
๊ฐ ๊ฐ์ ๋๋ง์ ํ์ธํ๋๋ฐ ์ด๋ ๊ฒ ์ฝ๋๋ฅผ ์์ฑํด์ ์คํํ ๋๋ ๋ฌธ์ ๊ฐ ์์๋ค. ๊ทธ๋ฐ๋ฐ ์ง๋ฌธ ๊ธ์ ๋ต๋ณ์ ๋ณด๊ณ ์๋ก์ด ํ
์คํธ ์ผ์ด์ค๋ฅผ ์ถ๊ฐํ๋๋ ๋ฆฌ์คํธ์ ์ ๊ฐ์ด๋ฐ์ ์์นํ์ ๋ (lower == upper
) ์ฐพ๋ ๊ฐ์ด ์์ด๋ -1
์ ๋ฐํํ๋ ๊ฑธ ํ์ธํ๋ค. ๊ทธ๋์ ์กฐ๊ฑด๋ฌธ์ and L[l] != x
๋ฅผ ์ถ๊ฐํจ์ผ๋ก์จ ํด๊ฒฐํ ์ ์์๋ค.
-
ํ๋ก๊ทธ๋๋จธ์ค ์ด์์! ์๋ฃ๊ตฌ์กฐ์ ์๊ณ ๋ฆฌ์ฆ์ ์ฒ์์ด์ง? - ํํธ4, 5 ์์ ๋ ธํธ
๋๊ธ
์ด ๊ธ ๊ณต์ ํ๊ธฐ
-
๊ตฌ๋
ํ๊ธฐ
๊ตฌ๋ ํ๊ธฐ
-
์นด์นด์คํก
์นด์นด์คํก
-
๋ผ์ธ
๋ผ์ธ
-
ํธ์ํฐ
ํธ์ํฐ
-
Facebook
Facebook
-
์นด์นด์ค์คํ ๋ฆฌ
์นด์นด์ค์คํ ๋ฆฌ
-
๋ฐด๋
๋ฐด๋
-
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
-
Pocket
Pocket
-
Evernote
Evernote