[TIL] Day41 #์žฌ๊ท€

Beanxxยท2022๋…„ 6์›” 23์ผ
0

TIL

๋ชฉ๋ก ๋ณด๊ธฐ
41/120
post-thumbnail

2022.06.23(Thurs)

[TIL] Day41
[SEB FE] Day41

์˜ค๋Š˜๋ถ€ํ„ฐ Section3 Start ๐Ÿ™Œ

โ˜‘๏ธย ์žฌ๊ท€(recursion)

: ์ž๊ธฐ ์ž์‹ ์„ ํ˜ธ์ถœํ•˜๋Š” ํ•จ์ˆ˜

๐Ÿ“Žย ์žฌ๊ท€๋กœ ๋ฌธ์ œ ํ•ด๊ฒฐํ•˜๋Š” ๋‹จ๊ณ„

  1. ๋ฌธ์ œ๋ฅผ ์ข€ ๋” ์ž‘๊ฒŒ ์ชผ๊ฐœ๊ธฐ
  2. ๋ฌธ์ œ๊ฐ€ ๋”์ด์ƒ ์ž‘์•„์ง€์ง€ ์•Š์„ ๋•Œ๊นŒ์ง€, ๊ฐ€์žฅ ์ž‘์€ ๋‹จ์œ„๋กœ ๋ฌธ์ œ ์ชผ๊ฐœ๊ธฐ
  3. ๊ฐ€์žฅ ์ž‘์€ ๋‹จ์œ„์˜ ๋ฌธ์ œ๋ฅผ ํ’‚ โ†’ ์ „์ฒด ๋ฌธ์ œ ํ•ด๊ฒฐ
arrSum([1, 2, 3, 4, 5]) === 1 + arrSum([2, 3, 4, 5]);
arrSum([2, 3, 4, 5]) === 2 + arrSum([3, 4, 5]);
arrSum([3, 4, 5]) === 3 + arrSum([4, 5]);
arrSum([4, 5]) === 4 + arrSum([5]);
arrSum([5]) === 5 + arrSum([]);
arrSum([]) === 0; // ๊ฐ€์žฅ ์ž‘์€ ๋‹จ์œ„
function arrSum (arr) {
	// ๋นˆ ๋ฐฐ์—ด์ผ ๋•Œ 0 ๋ฆฌํ„ด ์กฐ๊ฑด๋ฌธ
	// ๊ฐ€์žฅ ์ž‘์€ ๋‹จ์œ„ ๋ฌธ์ œ ํ•ด๊ฒฐ & ์žฌ๊ท€ stop code
	if (arr.length === 0) {
		return 0;
	}

	// ๋ฐฐ์—ด ์ฒซ ์š”์†Œ(arr.shift()) + ๋‚˜๋จธ์ง€ ์š”์†Œ๊ฐ€ ๋‹ด๊ธด ๋ฐฐ์—ด์„ ๋ฐ›๋Š” arrSum()
	return arr.shift() + arrSum(arr);
}

๐Ÿ“Žย When ์žฌ๊ท€ ์‚ฌ์šฉ?

  1. ๋น„์Šทํ•œ ๊ตฌ์กฐ์˜ ๋” ์ž‘์€ ๋ฌธ์ œ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ
  2. ์ค‘์ฒฉ๋œ ๋ฐ˜๋ณต๋ฌธ์ด ๋งŽ์€ ๊ฒฝ์šฐ
  3. ๋ฐ˜๋ณต๋ฌธ์˜ ์ค‘์ฒฉ ํšŸ์ˆ˜๋ฅผ ์˜ˆ์ธกํ•˜๊ธฐ ์–ด๋ ค์šด ๊ฒฝ์šฐ
  4. ๋ฐ˜๋ณต๋ฌธ์œผ๋กœ ์ž‘์„ฑ๋œ ์ฝ”๋“œ๋ฅผ ๋” ๊ฐ„๊ฒฐํ•˜๊ณ  ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ฒŒ ์ž‘์„ฑํ•˜๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ
  • ์žฌ๊ท€์˜ ๊ธฐ์ดˆ(base case): ์žฌ๊ท€ ํ•จ์ˆ˜๋ฅผ ๊ตฌํ˜„ํ•  ๋•Œ, ์žฌ๊ท€์˜ ํƒˆ์ถœ ์กฐ๊ฑด(์žฌ๊ท€ ํ˜ธ์ถœ์ด ๋ฉˆ์ถ”๋Š” ์กฐ๊ฑด) ๊ตฌ์„ฑ
    • ํƒˆ์ถœ ์กฐ๊ฑด์ด ์—†๋Š” ๊ฒฝ์šฐ, ์žฌ๊ท€ ํ•จ์ˆ˜๋Š” ๋์—†์ด ์ž๊ธฐ ์ž์‹  ํ˜ธ์ถœ
function recursive(input1, input2, ...) {
	// base case: ๋ฌธ์ œ๋ฅผ ๋” ์ด์ƒ ์ชผ๊ฐค ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ (์žฌ๊ท€์˜ ๊ธฐ์ดˆ)
	if (๋ฌธ์ œ๋ฅผ ๋” ์ด์ƒ ์ชผ๊ฐค ์ˆ˜ ์—†์„ ๊ฒฝ์šฐ) {
		return ๋‹จ์ˆœํ•œ ๋ฌธ์ œ ํ•ด๋‹ต;
	}
	
	// recursive case: ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ
	return ๋” ์ž‘์€ ๋ฌธ์ œ๋กœ ์ƒˆ๋กญ๊ฒŒ ์ •์˜๋œ ๋ฌธ์ œ;
}


๋‚ ์”จ๊ฐ€ ๊ฟ‰๊ฟ‰ํ•ด์„œ ๊ทธ๋Ÿฐ๊ฑด์ง€ ๊ฐœ๋ฐœ๊ณผ ๋ฒŒ์จ ๊ถŒํƒœ๊ธฐ๊ฐ€ ์˜จ๊ฑด์ง€ ์•„๋ฌด๊ฒƒ๋„ ํ•˜๊ธฐ ์‹ซ์—ˆ๋˜ ๋‚ .. ๊ฒฉ๋ ฌํ•˜๊ฒŒ ๊ทธ๋ƒฅ ๊ณ„์† ๋ˆ„์›Œ์žˆ๊ณ  ์‹ถ์—ˆ๋‹ค,, ๊ทธ๋ž˜๋„ ์˜ค๋Š˜ ๋ฐฐ์šด ๋‚ด์šฉ ์ •๋ฆฌ๋ฅผ ๋‚ด์ผ๋กœ ๋ฏธ๋ฃจ๋ฉด ๋‚ด์ผ์˜ ๋‚ด๊ฐ€ ํ•  ์ผ์ด ๋„˜ ๋งŽ์„ ๊ฒƒ ๊ฐ™์•„์„œ ์ผ๋‹จ ์ ์ž์ ์ž โœ๏ธ

์žฌ๊ท€,, ์•Œ๋“ฏ๋ง๋“ฏ ๋ฌธ์ œ ํ˜ผ์ž ํ’€์–ด๋ณด๋ผ๊ณ  ํ•˜๋ฉด ๋ชป ํ’€๋‘ฃ..๐Ÿฅฒ

profile
FE developer

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