์—ฌํƒœ๊นŒ์ง€์˜ ์š”์•ฝ.ย 

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

๊ธ€์ฟ ๋‚˜. ๊ทธ๋ ‡๊ตฐ ํ•˜๊ณ  ๊ฑ ์Šฅ ํ›‘๊ณ  ๋„˜์–ด๊ฐ.ย 


์˜ค๋Š˜์€ ์—ฌ๊ธฐ๊นŒ์ง€.