[๐Ÿ’ป ์ฝ”๋“œ์Šคํ…Œ์ด์ธ  FE 44๊ธฐ] ์žฌ๊ท€ํ•จ์ˆ˜

JiEunยท2023๋…„ 4์›” 11์ผ
0
post-thumbnail

โœ”๏ธ ์‹œ์ž‘

์žฌ๊ท€ ํ•จ์ˆ˜์— ๋Œ€ํ•ด ํ•™์Šตํ–ˆ๋‹ค.


๐Ÿ“ ์žฌ๊ท€ํ•จ์ˆ˜

  • ํ•จ์ˆ˜๊ฐ€ ์ž๊ธฐ ์ž์‹ ์„ ํ˜ธ์ถœํ•˜๋Š” ํ•จ์ˆ˜
  • ๋ฐ˜๋ณต๋ฌธ(while, for๋ฌธ)์œผ๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์žฌ๊ท€ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ์ด ์ข‹๋‹ค.
  • ๊ฐ„๋‹จํ•˜๊ฒŒ ๊ตฌํ˜† ํ•  ์ˆ˜ ์žˆ์–ด ์œ ์šฉํ•˜๋‹ค.

์žฌ๊ท€ : ์›๋ž˜์˜ ์ž๋ฆฌ๋กœ ๋˜๋Œ์•„ ๊ฐ€๊ฑฐ๋‚˜ ๋˜๋Œ์•„ ์˜ด
์ตœ์ ํ™” ๊ธฐ๋ฒ•(memoization) : ๋ฉ”๋ชจ๋ฅผ ํ•˜๋Š” ๊ฒƒ ์ฒ˜๋Ÿผ ๊ฐ’์„ ๊ธฐ์–ตํ•˜๊ณ  ํ•„์š” ํ•  ๋•Œ ์žฌ์‚ฌ์šฉ

์žฌ๊ท€ํ•จ์ˆ˜ ํ˜ธ์ถœ์ด ๋งŽ์•„ ์งˆ ์ˆ˜๋ก ์Šคํƒ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ•ด ์„ฑ๋Šฅ ์ด์Šˆ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

์žฌ๊ท€ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ์ ์ ˆํ•œ ์ข…๋ฃŒ ์กฐ๊ฑด๊ณผ ์ตœ์ ํ™”๋ฅผ ๊ณ ๋ คํ•ด์•ผํ•œ๋‹ค.

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

n์ด 0์ธ ๊ฒฝ์šฐ 1๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ , ๊ทธ๋Ÿฌ์ง€ ์•Š์€ ๊ฒฝ์šฐ n๊ณผ factorial(n-1)์˜ ๊ณฑ์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
factorial(n - 1)์€ ํ•จ์ˆ˜ ์ž์‹ ์„ ๋‹ค์‹œ ํ˜ธ์ถœํ•ด n-1์— ๋Œ€ํ•œ ํŒฉํ† ๋ฆฌ์–ผ ๊ฐ’์„ ๊ณ„์‚ฐํ•œ๋‹ค.
=> n์ธ 0์ด ๋  ๋•Œ ๊นŒ์ง€ ๋ฐ˜๋ณต

์–ธ์ œ ์žฌ๊ท€ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์ง€?

  • ์ฃผ์–ด์ง„ ๋ฌธ์ œ๋ฅผ ๋น„์Šทํ•œ ๊ตฌ์กฐ์˜ ๋” ์ž‘์€ ๋ฌธ์ œ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ
  • ์ค‘์ฒฉ๋œ ๋ฐ˜๋ณต๋ฌธ์ด ๋งŽ๊ฑฐ๋‚˜ ๋ฐ˜๋ณต๋ฌธ์˜ ์ค‘์ฒฉ ํšŸ์ˆ˜(number of loops)๋ฅผ ์˜ˆ์ธกํ•˜๊ธฐ ์–ด๋ ค์šด ๊ฒฝ์šฐ

์žฌ๊ท€์ ์œผ๋กœ ์‚ฌ๊ณ ํ•˜๊ธฐ

  • recursice case : ๋ฌธ์ œ๋ฅผ ๋™์ผํ•œ ๋ฐฉ์‹์œผ๋กœ ๊ณ„์† ์ชผ๊ฐœ๊ธฐ
  • base case : ๋” ์ด์ƒ ์•ˆ ์ชผ๊ฐœ๋ฉด(์ข…๋ฃŒ ์กฐ๊ฑด)

1. ์žฌ๊ท€ ํ•จ์ˆ˜์˜ ์ž…๋ ฅ ๊ฐ’๊ณผ ์ถœ๋ ฅ ๊ฐ’ ์ •์˜ํ•˜๊ธฐ

2. ๋ฌธ์ œ๋ฅผ ์ชผ๊ฐœ๊ณ  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๋‚˜๋ˆ„๊ธฐ

3. ๋‹จ์ˆœํ•œ ๋ฌธ์ œ ํ•ด๊ฒฐํ•˜๊ธฐ

4. ๋ณต์žกํ•œ ๋ฌธ์ œ ํ•ด๊ฒฐํ•˜๊ธฐ

5. ์ฝ”๋“œ ๊ตฌํ˜„ํ•˜๊ธฐ

์ผ๋ฐ˜์ ์ธ ์žฌ๊ท€ ํ•จ์ˆ˜ ํ…œํ”Œ๋ฆฟ

function recursive(input1, input2, ...) {
  // base case : ๋ฌธ์ œ๋ฅผ ๋” ์ด์ƒ ์ชผ๊ฐค ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ
  if (๋ฌธ์ œ๋ฅผ ๋” ์ด์ƒ ์ชผ๊ฐค ์ˆ˜ ์—†์„ ๊ฒฝ์šฐ) {
    return ๋‹จ์ˆœํ•œ ๋ฌธ์ œ์˜ ํ•ด๋‹ต;
  }

  // recursive case : ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ
  return ๋” ์ž‘์€ ๋ฌธ์ œ๋กœ ์ƒˆ๋กญ๊ฒŒ ์ •์˜๋œ ๋ฌธ์ œ
}

โœ๏ธ ๋งˆ์น˜๋ฉฐ

์žฌ๊ท€ ํ•จ์ˆ˜ ๊ด€๋ จ๋œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ’€์—ˆ๋‹ค.
์•Œ ๋“ฏ ํ•˜๋ฉด์„œ๋„ ์ž˜ ๋ชจ๋ฅด๊ฒ ๋‹ค.

๋ฐ˜๋ณต๋ฌธ์œผ๋กœ ํ•˜๋ฉด ๊ธˆ๋ฐฉ ํ‘ธ๋Š”๋ฐ ์žฌ๊ท€์ ์œผ๋กœ ํ•˜๋ ค๊ณ  ํ•˜๋‹ˆ ์กฐ๊ธˆ ํ—ค๋งธ๋˜ ๊ฑฐ ๊ฐ™๋‹ค.

profile
๐Ÿ’ป ํ”„๋ก ํŠธ์—”๋“œ๋ฅผ ๋ชฉํ‘œ๋กœ ์„ฑ์žฅ ์ค‘! (์•Œ์•„๋ดค๋˜ ๋‚ด์šฉ ๋“ฑ์„ ์ •๋ฆฌํ•˜๊ธฐ)

0๊ฐœ์˜ ๋Œ“๊ธ€