์ฌํ๊น์ง์ ์์ฝ.ย
1. ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ํ์ ํ๊ธฐ ์ํด์๋ ์ธ์ด๊ฐ ์ด๋ค ๋ฐ์ดํฐ๋ฅผ ์ด๋ค ํ๋ก์์ ๋ฅผ ์ด๋ป๊ฒ ์ฌ์ฉํ๋์ง๋ฅผ ํ์ ํด์ผ ํ๋ค.ย
2. ๊ทธ๋ฌ๊ธฐ ์ํด ๊ฐ์ฅ ๊ธฐ๋ณธ๊ฐ๋ ๋ค์ ๋จผ์ ํ์ ํ์.ย
-> ํ๋ฆฌ๋ฏธํฐ๋ธ ๋ฐ์ดํฐ, ํ๋ฆฌ๋ฏธํฐ๋ธ ํ๋ก์์ , definition, conditional expression, ์ถ์ํ ๋ฑ๋ฑ์ ๋ฐฐ์.ย
3. ๋ค์์ผ๋ก๋ ์ถ์ํ ํ ๋, ๊ทธ ๋ก์ปฌ ์ถ์ฑํ, ๊ธ๋ก๋ฒ ์ถ์ํ ๋ฑ์ ๋ฐฐ์.ย
์ง๊ธ๋ถํฐ ๋ฐฐ์์ผ ํ๋ ๋ด์ฉ์, ์ฌํ๊น์ง ๋ฐฐ์ด ๊ธฐ๋ณธ ๊ฐ๋ ๋ค์ ์ด๋ป๊ฒ ์ด์ฉํ๋๊ฐ์ด๋ค.ย
์ง๊ธ๊น์ง๋ ์ฒด์ค์ ๋ง์ ์ข ๋ฅ์ ๋ํด ๋ฐฐ์ ๋ค๋ฉด, ์ง๊ธ๋ถํฐ๋ ์ฒด์ค์ ์ ๋ต์ ๋ฐฐ์์ผ ํ๋ค.ย
๊ทธ์ค์ ํ๋๊ฐ Linear Recursion์ด๋ค.ย
ํฉํ ๋ฆฌ์ผ์ ๊ณ์ฐ ํ๊ธฐ ์ํด์๋ ์๋์ ๊ฐ์ ์์ ํ์ด์ผ ํ๋๋ฐ,ย
์ฌ๊ท๋ฅผ ์ฌ์ฉํ๋ฉด ์ด๋ ๊ฒ ๋๋ค.ย
๊ทธ๋ฆผ์ผ๋ก ๋ํ๋ด๋ฉดย
๊ทผ๋ฐ ์ฌ๊ท๊ฐ ์๋๋ผ iteration ์ ์ฌ์ฉํ๋ฉด ์ด๋ ๊ฒ ๋๋ค.ย
๊ทธ๋ฆผ์ผ๋ก ๋ํ๋ด๋ฉดย
๋์ด ๋ณธ์ง์ ์ผ๋ก ๋ค๋ฅธ์ ์, ์ฌ๊ท์ ๊ฒฝ์ฐ๋ ์ค๊ฐ๊ณ์ฐ์ ๊ณ์ ํธ๋ํน ํด์ค์ผ ํ๋๋ฐย
iteration์ ๊ฒฝ์ฐ๋ ๊ทธ๋ดํ์๊ฐ ์๋ค๋์ . ๋ฉ๋ชจ๋ฆฌ์ ์ผ๋ก ๋ ํจ๊ณผ์ ์ด๋ผ๋๊ฒ์ด๋ค.ย
๋ ํ๋์ ๊ณ์ฐ ๋ฐฉ๋ฒ์ผ๋ก Tree Recursion ์ด ์๋ค.ย
์๋ก ํผ๋ณด๋์น ์์ด์ ๋ณด์.ย
๊ฐ๊ฐ์ ์ซ์๋ ์์ ๋ ์ซ์์ ํฉ์ธ ์์ด์ธ๋ฐ,ย
์ด๊ฒ์ ์์์ผ๋ก ๋ํ๋ด๋ฉด ์ด๋ ๊ณ ,ย
Lisp๋ก ๋ํ๋ด๋ฉด ์ด๋ ๊ฒ ๋๋ค.ย
์ด๊ฑธ ๊ทธ๋ฆผ์ผ๋ก ๋ํ๋ด๋ฉด ์ด๋ ๊ฒ ๋๋๋ฐ, ๋ณด๋ฉด ์๋ค์ํผ ๋งค์ฐ ๋นํจ์จ์ ์ด๋ผ๋๊ฒ์ ์ ์ ์๋ค.ย
๊ณ์ฐ ์๊ฐ ์ธํ์ exponential grow ํ๋ค.ย
๋ค๋ฅด๊ฒ ๊ณ์ฐํ๋ ๋ฐฉ๋ฒ์ผ๋ก๋ ์ด๋ ๊ฒ ํ๋ฉด ๋๋ค.ย
์... ๋ญ ๋์ถฉ ๋ณด๋ฉดย
์ด๋ ํ ํ๋ก์์ ๋ฅผ ๊ตฌํํ๊ธฐ ์ํด์๋ ๋ญ ์ด๋ฌ์ ๋ฌํ ๋ฐฉ๋ฒ๋ค์ด ์๋ค.ย
linear recursion, tree recursion, iteration ๋ฑ๋ฑ๋ฑ.ย
๊ทผ๋ฐ ๊ทธ๊ฒ ๋ฌธ์ ์ ๋ฐ๋ผ์ ๊ณ์ฐ ๋ฆฌ์์ค๊ฐ ํฌ๊ฒ ์ฐจ์ด๊ฐ ๋๋ค. ์ด๋ฐ ๋ง์ด๋ค. ๋ญ ๊ธฐ๋ณธ์ ์ธ ๋ด์ฉ์ด๊ตฌ์ย
์ฑ ์ฝ๋ค๊ฐ tail recursion ๊ผฌ๋ฆฌ ์ฌ๊ท๋ผ๋ ๋ง์ด ๋์์ ์ฐพ์๋ดค๋๋ย
์ด๋ฐ ์ด๋ค ํ ๋ก ์ ๋ฒ์ด์๋ ๋ถ๋ค์ ์ฐพ์๋.ย
https://groups.google.com/g/scala-korea/c/5PCCAS8wu8o
๊ธ์ฟ ๋. ๊ทธ๋ ๊ตฐ ํ๊ณ ๊ฑ ์ฅ ํ๊ณ ๋์ด๊ฐ.ย
์ค๋์ ์ฌ๊ธฐ๊น์ง.
ํด๋น ๋๊ธ์ ์ญ์ ๋์์ต๋๋ค.
์คํธ...