๊ฐœ์ธ ํ”„๋กœ์ ํŠธ๋กœ ํฌํŠธํด๋ฆฌ์˜ค ์›น์‚ฌ์ดํŠธ๊ฐ€ ๋งŒ๋“ค๊ณ  ์‹ถ์–ด์„œ ๋ฐ์Šคํฌํƒ‘์— ๋ฆฌ์•กํŠธ๋ฅผ ์„ค์น˜ํ–ˆ๋‹ค.

๊ธฐ์กด์—๋Š” ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ € npm๊ณผ ํŒจํ‚ค์ง€ ๋Ÿฌ๋„ˆ์ธ npx๋งŒ์„ ์‚ฌ์šฉํ–ˆ๋Š”๋ฐ,

์ด๋ฒˆ ๊ธฐํšŒ์— yarn์œผ๋กœ react๋ฅผ ์„ค์น˜ํ•˜๊ณ  ์‚ฌ์šฉํ•˜๊ณ ์ž..

yarn์ด ๋„๋Œ€์ฒด ๋ฌด์—‡์ธ์ง€ ์•Œ์•„๋ณด์•˜๋‹ค!

...

yarn์€ ์‰ฝ๊ฒŒ ๋งํ•ด์„œ, ํŽ˜์ด์Šค๋ถ์—์„œ ๋งŒ๋“ 

npm๊ณผ ๊ฐ™์€ node.js ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ €์ด๋‹ค.

์žฅ์ ์€ ๊ธฐ์กด์˜ npm์ด ๊ฐ€์กŒ๋˜ ๋‹จ์ ์„ ๋ณด์™„ํ•˜๋Š” ์ฐจ์›์—์„œ ๋งŒ๋“ค์–ด์ง„ ๋„๊ตฌ๊ธฐ๋•Œ๋ฌธ์—,

npm์ด ๊ฐ€์กŒ๋˜ ๋ฒ„์ „ ์ฐจ์ด๋กœ ์ธํ•œ ํŒจํ‚ค์ง€ ์ค‘๋ณต ์„ค์น˜ ๋“ฑ์˜ ๋ฌธ์ œ๋ฅผ ์ž˜ ๋ณด์™„ํ•ด์ค€๋‹ค๋Š” ๊ฒƒ..!

...

yarn์€ npm์„ ํ†ตํ•ด์„œ ์„ค์น˜ ๊ฐ€๋Šฅํ•œ๋ฐ, ์„ค์น˜ ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค!


์นด๋“œ ๋‰ด์Šค ์‰ฝ๊ฒŒ ๋ณด๋Š” ๋ฒ•: ์ฒซ ์ด๋ฏธ์ง€ ํด๋ฆญํ•˜๊ณ  ๋ฐฉํ–ฅํ‚ค๋กœ ์Šคํฌ๋กคํ•ด์„œ ๋„˜๊ธฐ๊ธฐ

 

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋„ ๊ฐ“ ์ž…๋ฌธํ•œ ์ž…์žฅ์ด์ง€๋งŒ ๋™์‹œ์— ๋ฐฐ์šฐ๊ธฐ ์‹œ์ž‘ํ•œ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ์ž…๋ฌธํŽธ!

์ง€๊ธˆ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค!


ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋ž€ ์˜ˆ์ „๋ถ€ํ„ฐ ์ง€๊ธˆ๊นŒ์ง€ ๋ฐ›์•„๋“ค์—ฌ์ง€๋Š” ์ •์˜๊ฐ€ ๋‹ค์–‘ํ•˜๊ฒŒ ๋ณ€ํ™”ํ•ด์™”์ง€๋งŒ,

๊ฐ€์žฅ ์ž…๋ฌธ์ž๊ฐ€ ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ฒŒ ์ •์˜ํ•œ ๊ฒƒ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

'ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์— ํƒ€์ž…์„ ์ถ”๊ฐ€ํ•œ ๊ฒƒ์ด๋‹ค.'

ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ = ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ + ํƒ€์ž…

 

ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ์ƒ์œ„ ๊ฐœ๋…(์Šˆํผ์…‹; Super Set)์ด๋‹ค.

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์ธํ„ฐํ”„๋ฆฌํ„ฐํ˜• ์–ธ์–ด๋ผ๋ฉด ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋Š” ์ปดํŒŒ์ผํ˜• ์–ธ์–ด๋กœ

์ปดํŒŒ์ผ ์ดํ›„ ์ž๋™์œผ๋กœ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜๋œ๋‹ค. 

 

๊ทธ๋ ‡๋‹ค๋ฉด ๊ตณ์ด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋Œ€์‹  ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ์ด์œ ๊ฐ€ ์žˆ๋Š”๊ฐ€?

์ด๋Š” ๊ธฐ์กด์˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๊ฐ€์ง„ ํŠน์ง•์ธ ๋†’์€ ์ž์œ ๋„์™€ ์œ ์—ฐ์„ฑ์„ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•จ์ด๋ผ ํ•  ์ˆ˜ ์žˆ๋‹ค.

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ๋™์  ํƒ€์ž… ์–ธ์–ด๋กœ ๋น„๊ต์  ํƒ€์ž…์˜ ๋ณ€ํ™˜์ด ์œ ์—ฐํ•˜๊ฒŒ ์ด๋ค„์ง„๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ์ •์ˆ˜ํ˜• 1๊ณผ ๋ฌธ์žํ˜• '3'์€ ์›๋ž˜ ์—ฐ์‚ฐ์ด ์ด๋ค„์ง€๋ฉด ์•ˆ ๋˜์ง€๋งŒ

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ๋Š” ํ˜•๋ณ€ํ™˜์ด ์ž„์˜๋กœ ์œ ์—ฐํ•˜๊ฒŒ ์ด๋ค„์ง€๋ฉฐ ์—ฐ์‚ฐ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•œ๋‹ค. 

์ด๋Š” ์‚ฌ์šฉ์ž ์ž…์žฅ์—์„œ ๊ฐ„ํŽธํ•˜๊ฒŒ ๋Š๊ปด์งˆ ์ˆ˜ ์žˆ์ง€๋งŒ,

ํฐ ๊ทœ๋ชจ์˜ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•  ๋•Œ๋Š” ๋ณด๋‹ค ์—„๊ฒฉํ•œ ํ˜•์‹์ด ํ•„์š”ํ•  ๊ฒƒ์ด๋‹ค.

๋ฐ˜๋ฉด ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋Š” ์ •์  ํƒ€์ž… ์–ธ์–ด๋กœ ์ด๋Ÿฌํ•œ ๋†’์€ ์ž์œ ๋„์™€ ์œ ์—ฐ์„ฑ์„ ๊ฐ€์ง„

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๊ฐ–์ถ”์ง€ ๋ชปํ•œ ์•ˆ์ •์„ฑ์„ ์ œ๊ณตํ•œ๋‹ค.

 

๋”ฐ๋ผ์„œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๋ณด๋‹ค ๋†’์€ ์ž์œ ๋„์™€ ์œ ์—ฐ์„ฑ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๋ฉด,

ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋Š” ๋†’์€ ์•ˆ์ •์„ฑ๊ณผ ์ผ๊ด€์„ฑ์„ ์ถ”๊ตฌํ•œ๋‹ค.

 

์ด๋Š” ๋ณต์žกํ•˜๊ณ  ํฐ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•จ์— ์žˆ์–ด ์•ˆ์ •์„ฑ์„ ์ œ๊ณตํ•œ๋‹ค๋Š” ์ธก๋ฉด์—์„œ

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ณด๋‹ค ๋”์šฑ ์ ํ•ฉํ•˜๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค. 

์ด ์™ธ์—๋„ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ณด๋‹ค ์—๋Ÿฌ์— ๋Œ€ํ•˜์—ฌ ๋”์šฑ ์ž์„ธํ•˜๊ฒŒ ์„ค๋ช…ํ•ด์ฃผ๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ๋””๋ฒ„๊น…์— ์šฉ์ดํ•œ

ํŠน์ง•์„ ๋งŽ์ด ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฒƒ์ด ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ์ด๋‹ค.  

 

๋‚˜ ๋‚˜๋ฆ„ ํ•ด์„์„ ํ•ด๋ณด์ž๋ฉด, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ์ž์œ ๋กœ์šด ๊ธ€์“ฐ๊ธฐ์— ๊ฐ€๊น๋‹ค.

ํŽธํ•˜๊ฒŒ ๋งค์ผ ๋งค์ผ ์ž‘์„ฑํ•˜๋Š” ์ผ๊ธฐ๋Š” ํ˜•์‹์„ ๊ฐ–์ถ”์ง€ ์•Š๋Š”๋ฐ,

์ž์œ ๋กœ์šด ํ˜•์‹์ด ๊ธ€์“ฐ๊ธฐ๋ฅผ ํŽธํ•˜๊ณ  ํšจ์œจ์ ์œผ๋กœ ๋งŒ๋“ค ๊ฒƒ์ด๋‹ค. 

ํ•œํŽธ, ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ๊ฐ ์žก๊ณ  ์ฑ… ๋งŒ๋“ค๊ธฐ๋ผ ์ƒ๊ฐํ•˜๋ฉด ํŽธํ•  ๊ฒƒ ๊ฐ™๋‹ค.

๋ชฉ์ฐจ๋ฅผ ๊ตฌ์„ฑํ•˜๊ณ , ๊ฐ ์ฑ•ํ„ฐ ๋ณ„ ์–ด๋–ค ๋‚ด์šฉ์ด ๋“ค์–ด๊ฐˆ์ง€ ๊ตฌ์ƒ์„ ํ•˜๋ฉด์„œ, ์ž‘์„ฑ๊ณผ ํ‡ด๊ณ ๋ฅผ ๊ฑฐ์นœ๋‹ค.

 

๊ทธ๋Ÿผ ๊ฐ„๋‹จํ•œ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ์‚ฌ์šฉ๋ฒ•์„ ์•Œ์•„๋ณด์ž.

์–ด๋ ค์šธ ๊ฒƒ ์—†๋‹ค.

๋ณ€์ˆ˜ ์„ ์–ธํ•  ๋•Œ, ์ฝœ๋ก ๊ณผ ํ•จ๊ป˜ ํƒ€์ž…์„ ์„ ์–ธํ•˜๋ฉด ๋œ๋‹ค.

 

ํด๋ž˜์Šค ์„ ์–ธ ์‹œ์—๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ด๋‹ค. ์ƒ์„ฑ์ž ๊ด„ํ˜ธ ์•ˆ์— ๊ฐ ๋ณ€์ˆ˜์˜ ํƒ€์ž…์„ ์„ ์–ธํ•˜๋ฉด ๋œ๋‹ค.

๋” ๊ฐ„๋‹จํ•˜๊ฒŒ ํ‘œ๊ธฐํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์กด์žฌํ•˜๋Š”๋ฐ ์ด๋Š” ๋‹ค์Œ์— ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ๋‹ค. 

์žฌ๊ท€ํ•จ์ˆ˜ (Recursive Function)


ํ†ต๊ณก์˜ ๋ฒฝ

 

์–ด๋Š ํ•œ ์ปดํ“จํ„ฐ๊ณตํ•™๊ณผ ํ•™์ƒ์ด ์œ ๋ช…ํ•œ ๊ต์ˆ˜๋‹˜์„ ์ฐพ์•„๊ฐ€ ๋ฌผ์—ˆ๋‹ค.
"์žฌ๊ท€ํ•จ์ˆ˜๊ฐ€ ๋ญ”๊ฐ€์š”?"
"์ž˜ ๋“ค์–ด๋ณด๊ฒŒ. ์˜›๋‚ ์˜›๋‚  ํ•œ ์‚ฐ ๊ผญ๋Œ€๊ธฐ์— ์ด์„ธ์ƒ ๋ชจ๋“  ์ง€์‹์„ ํ†ต๋‹ฌํ•œ ์„ ์ธ์ด ์žˆ์—ˆ์–ด.
๋งˆ์„ ์‚ฌ๋žŒ๋“ค์€ ๋ชจ๋‘ ๊ทธ ์„ ์ธ์—๊ฒŒ ์ˆ˜๋งŽ์€ ์งˆ๋ฌธ์„ ํ–ˆ๊ณ , ๋ชจ๋‘ ์ง€ํ˜œ๋กญ๊ฒŒ ๋Œ€๋‹ตํ•ด ์ฃผ์—ˆ์ง€.
๊ทธ์˜ ๋‹ต์€ ๋Œ€๋ถ€๋ถ„ ์˜ณ์•˜๋‹ค๊ณ  ํ•˜๋„ค. ๊ทธ๋Ÿฐ๋ฐ ์–ด๋Š ๋‚ , ๊ทธ ์„ ์ธ์—๊ฒŒ ํ•œ ์„ ๋น„๊ฐ€ ์ฐพ์•„์™€์„œ ๋ฌผ์—ˆ์–ด."
____"์žฌ๊ท€ํ•จ์ˆ˜๊ฐ€ ๋ญ”๊ฐ€์š”?"
____"์ž˜ ๋“ค์–ด๋ณด๊ฒŒ. ์˜›๋‚ ์˜›๋‚  ํ•œ ์‚ฐ ๊ผญ๋Œ€๊ธฐ์— ์ด์„ธ์ƒ ๋ชจ๋“  ์ง€์‹์„ ํ†ต๋‹ฌํ•œ ์„ ์ธ์ด ์žˆ์—ˆ์–ด.
____๋งˆ์„ ์‚ฌ๋žŒ๋“ค์€ ๋ชจ๋‘ ๊ทธ ์„ ์ธ์—๊ฒŒ ์ˆ˜๋งŽ์€ ์งˆ๋ฌธ์„ ํ–ˆ๊ณ , ๋ชจ๋‘ ์ง€ํ˜œ๋กญ๊ฒŒ ๋Œ€๋‹ตํ•ด ์ฃผ์—ˆ์ง€.
____๊ทธ์˜ ๋‹ต์€ ๋Œ€๋ถ€๋ถ„ ์˜ณ์•˜๋‹ค๊ณ  ํ•˜๋„ค. ๊ทธ๋Ÿฐ๋ฐ ์–ด๋Š ๋‚ , ๊ทธ ์„ ์ธ์—๊ฒŒ ํ•œ ์„ ๋น„๊ฐ€ ์ฐพ์•„์™€์„œ ๋ฌผ์—ˆ์–ด."
________"์žฌ๊ท€ํ•จ์ˆ˜๊ฐ€ ๋ญ”๊ฐ€์š”?"
________"์žฌ๊ท€ํ•จ์ˆ˜๋Š” ์ž๊ธฐ ์ž์‹ ์„ ํ˜ธ์ถœํ•˜๋Š” ํ•จ์ˆ˜๋ผ๋„ค"
________๋ผ๊ณ  ๋‹ต๋ณ€ํ•˜์˜€์ง€.
____๋ผ๊ณ  ๋‹ต๋ณ€ํ•˜์˜€์ง€.
๋ผ๊ณ  ๋‹ต๋ณ€ํ•˜์˜€์ง€.

์žฌ๊ท€(Recursion):

  • ํ•จ์ˆ˜ ์Šค์Šค๋กœ ์ž์‹ ์„ ์ฐธ์กฐํ•ด ํ˜ธ์ถœํ•˜๋ฉด์„œ ๋™์ผํ•œ ์ฝ”๋“œ๊ฐ€ ๊ณ„์†์ ์œผ๋กœ ์ˆ˜ํ–‰๋˜๋Š” ํ•จ์ˆ˜ ํ˜ธ์ถœ ๋ฐฉ๋ฒ•
  • ์žฌ๊ท€ ํ•จ์ˆ˜๋Š” ํŠน์ • ์กฐ๊ฑด์ด ๋์„ ๋•Œ, ์ž์‹ ์„ ๊ทธ๋งŒ ํ˜ธ์ถœ๋˜๋„๋ก ์ œํ•œํ•˜๋Š” exit code๊ฐ€ ํ•„์š”
  • ์žฌ๊ท€ํ•จ์ˆ˜: ํ•จ์ˆ˜ ๋‚ด๋ถ€์—์„œ ํ•œ ๋ฒˆ ์ด์ƒ ์ž์‹ ์˜ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœ
  • ์žฌ๊ท€์•Œ๊ณ ๋ฆฌ์ฆ˜: ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋‚ด๋ถ€์—์„œ ํ•œ ๋ฒˆ ์ด์ƒ ์ž์‹ ์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ˜ธ์ถœ

์žฌ๊ท€ํ•จ์ˆ˜๋ฅผ ์“ฐ๋Š” ์ด์œ :

  • ๋ณ€์ˆ˜๋ฅผ ์—ฌ๋Ÿฟ ๋งŒ๋“ค ํ•„์š”๊ฐ€ ์—†๋‹ค.
  • ์ฝ”๋“œ๊ฐ€ ๊ฐ„๊ฒฐํ•ด์ง€๊ณ  ์ง๊ด€์ ์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ€๋…์„ฑ์ด ๋†’์•„์ง„๋‹ค.
  • DFS(๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰)์„ ํ•จ์— ์žˆ์–ด ์ž์ฃผ ํ™œ์šฉ๋œ๋‹ค. 

์˜ˆ์‹œ 1)

// 3 + 2 + 1 + 0
function recursive(num) {
	if (num == 0) return;
	recursive(num - 1);
}

// 3 + (2 + (1 + 0)) -> 6
console.log(recursive(3));

์˜ˆ์‹œ 2)

function factorial(num) {
	if (num == 0) return 0;
    return num * factorial(num - 1);
}

// 3 * 2 * 1 * 0 -> 6
console.log(factorial(3));

+ Recent posts