Section3 Unit1 [์๋ฃ๊ตฌ์กฐ/์๊ณ ๋ฆฌ์ฆ] ์ฌ๊ท
๐ Chapter1. ์ฌ๊ท์ ์ดํด
• ์ฌ๊ทํจ์๋? ์๊ธฐ ์์ ์ ํธ์ถํ๋ ํจ์
• ์ฌ๊ท๋ ์ฃผ์ด์ง ๋ฌธ์ ๋ฅผ ๋น์ทํ ๊ตฌ์กฐ์ ๋ ์์ ๋ฌธ์ ๋ก ๋๋ ์ ์๋ ๊ฒฝ์ฐ๋ ์ค์ฒฉ๋ ๋ฐ๋ณต๋ฌธ์ด ๋ง๊ฑฐ๋ ๋ฐ๋ณต๋ฌธ์ ์ค์ฒฉ ํ์๋ฅผ ์์ธกํ๊ธฐ ์ด๋ ค์ด ๊ฒฝ์ฐ ์ฌ์ฉํ๊ธฐ ์ ํฉํ๋ค.
๐ Chapter2. ์ฌ๊ท์ ํ์ฉ
โ๏ธ ์ฌ๊ท์ ์ผ๋ก ์ฌ๊ณ ํ๊ธฐ
function arrSum (arr) {
// base case : ๋ฌธ์ ๋ฅผ ๋ ์ด์ ์ชผ๊ฐค ์ ์๋ ๊ฒฝ์ฐ (์ฌ๊ท์ ๊ธฐ์ด) -> ์ฌ๊ท์ ํ์ถ ์กฐ๊ฑด
if (arr.length === 0) {
return 0
}
return arr.shift() + arrSum(arr);
}
→ ๋ด๊ฐ ๊ฐ๊ณผํ๊ณ ์์๋ ๋ถ๋ถ์ธ๋ฐ, ํจ์์ ์ข ๋ฃ๋ return์ ํ์ ๋์ด๋ค.
→ ๋ฌดํ๋ฃจํ ๋ฐฉ์ง๋ฅผ ์ํด ์ฌ๊ท์ ํ์ถ ์กฐ๊ฑด์ ๊ตฌ์ฑํด์ผ ํ๋ค.
โ๏ธ ์ผ๋ฐ์ ์ธ ์ฌ๊ท ํจ์์ ํ ํ๋ฆฟ
1. ๋ฌธ์ ๋ฅผ ๋์ผํ ๋ฐฉ์์ผ๋ก ๊ณ์ ์ชผ๊ฐ๊ธฐ → ์ชผ๊ฐ๋ ๋ฐฉ์์ด recursive case
2. ๋ ์ด์ ์ ์ชผ๊ฐ์ง๋ฉด ๊ทธ๊ฒ์ด base case → ์ฌ๊ท ํจ์์ ํ์ถ ์กฐ๊ฑด
3. base case ํด๊ฒฐํ๊ธฐ → ์ชผ๊ฐ์ก๋ ๋ฌธ์ ๊ฐ ํ ๋ฒ์ ํด๊ฒฐ!
function recursive(input1, input2, ...) {
// base case : ๋ฌธ์ ๋ฅผ ๋ ์ด์ ์ชผ๊ฐค ์ ์๋ ๊ฒฝ์ฐ
if (๋ฌธ์ ๋ฅผ ๋ ์ด์ ์ชผ๊ฐค ์ ์์ ๊ฒฝ์ฐ) {
return ๋จ์ํ ๋ฌธ์ ์ ํด๋ต;
}
// recursive case : ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ
return ๋ ์์ ๋ฌธ์ ๋ก ์๋กญ๊ฒ ์ ์๋ ๋ฌธ์
}
๐ฉ๐ป๐ป example. factorial
// ๋ฌธ์ : ์์ฐ์๋ฅผ ์
๋ ฅ๋ฐ๊ณ , ์
๋ ฅ๋ฐ์ ์๋ถํฐ 1๊น์ง์ ์์ฐ์๋ฅผ ๋ชจ๋ ๊ณฑํ ๊ฐ์ ๋ฆฌํดํ๋ ์ฌ๊ท ํจ์ `fac` ์ ์์ฑํ์ธ์.
// ์1) fac(5) === 5 * 4 * 3 * 2 * 1 === 120
// ์2) fac(3) === 3 * 2 * 1 === 6
function fac(n) {
if (n === 1) {
return 1;
}
return n * fac(n-1);
}
console.log(fac(5))
โ๏ธ ์ฐ์ต๋ฌธ์ .
( ๐ฅ ์ ๋ฐ์ดํธ ์์ โจ )
๐ ์ค๋์ ํ๊ณ
์์นจ์ ์์ํ ๋๊น์ง๋ง ํด๋ ๊ธ์์ผ์ด๋ผ ๊ธฐ๋ถ์ด ์ข์๋๋ฐ, ์ ๊ท ์์ ์ด ๋๋๋ ์ฃผ๋ง์ด๋ผ๋ ์ฆ๊ฑฐ์ ๋ณด๋ค ํ์จ์ด ๋์ด๋ฌ๋ค. ์ฌ๊ทํจ์…? ๋๋ฌด ์ด๋ ค์ด๋ฐ…? ์ง๋ ์น์ ์ ๊ณ ์ฐจํจ์์ ์ด์ด ๋ ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ๋ ๋๋ฅผ ์ํ์ ๋ค๊ฒ ํ๋ค. ํ๋ก๊ทธ๋๋จธ์ค 0๋จ๊ณ์ธ ๋์๊ฒ ์ด๋ฐ ๋ฌธ์ ๋… ์ฌ๊ณ ์ ํ์ฅ์ด ๋ถ๊ฐํ๋จ ๋ง์ด์ง…
๊ทธ๋ฌํ ์ด์ ๋ก ๋๋ ๊ธ ์ ๊ธฐ์์ด ๋์๋ค๊ณ ํ๋ค..๐ง ํ๋ณตํด์ผ์ง, ํ๋ณต.
Section2์ ๋ฐ์ผ๋ฆฌ ์ฝ๋ฉ์ ํ๋ฉด์๋ ์ฌ์ค ๋๋ฌด ์ด๋ ค์์ ์ ํ๊ณผ ์ง์ค์ ํด์ผํ๋ ์ถ์๋ค. ์ด๋ฐ ์ฝ๋ฉํ ์คํธ ๋๋น ๋ฌธ์ ์ ๋๋ฌด ์๊ฐ์ ์์ ํ์๊ฐ ์์๊น, ์ถ๊ธฐ๋ ํ๋ค. ์ ํ๋ฆฌ๋ ๋ฌธ์ ๋ถ์ก๊ณ ์๋ ๊ฒ๋ณด๋ค ๋ฆฌ์กํธ์ ๋ ์ ๊ฒฝ์ ์ฐ๋๊ฒ ๋ ์ข์ง ์์๊น, ๋ผ๋ ์๊ฐ๋ ๋ค์๋ค.
๊ทธ๋ฐ๋ฐ ์กฐ๊ธ๋ง ๋ ์๊ฐ์ ํด๋ณด๋ ์ด์ฉ๋ฉด ๊ธฐ๋ณธ์ ์ผ์ง๋ ๋ชจ๋ฅด๋ ๋ฌธ์ , ์ด ์ ๋์ ๋ฌธ์ ํด๊ฒฐ๋ฅ๋ ฅ์ ์์ด์ผ ํ๋ ๊ฒ์ด ์๋๊น ๋ผ๋ ์๊ฐ์ด ๋ค์๋ค. ๋๋ฌด ์ฝ๊ฒ(?) ํฌ๊ธฐํด๋ฒ๋ฆฌ๋๊ฒ ํ๋ช ํ ์ ํ์ด ์๋๋ผ๋ ์๊ฐ์ด ๋ค์๋ค. ๊ทธ๋ฆฌ๊ณ ์ฌ์ค ์ํ๊ณ ์ถ๊ธฐ๋ ํ๊ณ . ๊ทธ๋ฌ๋ ๋ค์ ํ๋ด๋ด์ผ์ง. ๋๋ฌด ์คํธ๋ ์ค ๋ฐ์ง ๋ง๊ณ , ๋ด๊ฐ ๋ง์กฑํ ๋งํผ์ ํ์.