Jieunny์ ๋ธ๋ก๊ทธ
S3) Unit 1. [์๋ฃ๊ตฌ์กฐ/์๊ณ ๋ฆฌ์ฆ] ์ฌ๊ท ๋ณธ๋ฌธ
S3) Unit 1. [์๋ฃ๊ตฌ์กฐ/์๊ณ ๋ฆฌ์ฆ] ์ฌ๊ท
Jieunny 2023. 2. 13. 11:30๐ฃ ์ฌ๊ท์ ๊ฐ๋
โ๏ธ ์ฌ๊ท : ์๋์ ์๋ฆฌ๋ก ๋๋์๊ฐ๊ฑฐ๋ ๋๋์์ด.
โฐ ์ฌ๊ท ํจ์ : ์๊ธฐ ์์ ์ ํธ์ถํ๋ ํจ์
๐ฃ ์ฌ๊ท๋ก ๋ฌธ์ ํด๊ฒฐํ๊ธฐ
1๏ธโฃ ๋ฌธ์ ๋ฅผ ์ข ๋ ์๊ฒ ์ชผ๊ฐ ๋ค.
2๏ธโฃ 1๋ฒ๊ณผ ๊ฐ์ ๋ฐฉ์์ผ๋ก, ๋ฌธ์ ๊ฐ ๋๋ ์์์ง์ง ์์ ๋๊น์ง, ๊ฐ์ฅ ์์ ๋จ์๋ก ๋ฌธ์ ๋ฅผ ์ชผ๊ฐ ๋ค.
3๏ธโฃ ๊ฐ์ฅ ์์ ๋จ์์ ๋ฌธ์ ๋ฅผ ํ์ผ๋ก์จ ์ ์ฒด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ค.
โ๏ธ ์์
โฐ ๋ฐฐ์ด [1, 2, 3, 4, 5]์ ํฉ์ ๊ตฌํ๋ ๊ณผ์ ์ ์ฌ๊ท๋ก ํ์ด๋ณด์.
1. ๋ฌธ์ ๋ฅผ ์๊ฒ ์ชผ๊ฐ๊ธฐ
arrSum([1, 2, 3, 4, 5]) === 1 + arrSum([2, 3, 4, 5])
arrSum([2, 3, 4, 5]) === 2 + arrSum([3, 4, 5])
2. ๋ฌธ์ ๋ฅผ ๊ฐ์ฅ ์์ ๋จ์๋ก ์ชผ๊ฐ๊ธฐ
โฐ ๋ ์ด์ ์ชผ๊ฐค ์ ์๋ ์ํ๊น์ง ์ชผ๊ฐ ๋ค.
arrSum([3, 4, 5]) === 3 + arrSum([4, 5])
arrSum([4, 5]) === 4 + arrSum([5])
arrSum([5]) === 5 + arrSum([])
3. ๋ฌธ์ ํด๊ฒฐํ๊ธฐ
โฐ ๋๋ฌํ ๊ฐ์ฅ ์์ ๋ฌธ์ ๋ arrSum([]) ์ด๋ฏ๋ก, 0์ ๋ฆฌํดํด์ฃผ๋ฉด ๋๋ค.
โฐ arrSum ํจ์์ ๋ฆฌํด๊ฐ์ด ๋์ค๋ฉด์ ์ฐ์์ ์ผ๋ก ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋๊ณ , ์ต์ข ์ ์ผ๋ก๋ ๋ฌธ์ ์ ์ฒด๊ฐ ํด๊ฒฐ๋๋ค.
function arrSum (arr) {
// ๋น ๋ฐฐ์ด์ ๋ฐ์์ ๋ 0์ ๋ฆฌํดํ๋ ์กฐ๊ฑด๋ฌธ
// --> ๊ฐ์ฅ ์์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ์ฝ๋ & ์ฌ๊ท๋ฅผ ๋ฉ์ถ๋ ์ฝ๋
if (arr.length === 0) {
return 0
}
// ๋ฐฐ์ด์ ์ฒซ ์์ + ๋๋จธ์ง ์์๊ฐ ๋ด๊ธด ๋ฐฐ์ด์ ๋ฐ๋ arrSum ํจ์
// --> ์ฌ๊ท(์๊ธฐ ์์ ์ ํธ์ถ)๋ฅผ ํตํด ๋ฌธ์ ๋ฅผ ์๊ฒ ์ชผ๊ฐ๋๊ฐ๋ ์ฝ๋
return arr.shift() + arrSum(arr)
}
๐ฃ ์ฌ๊ท๋ ์ธ์ ์ฌ์ฉํ๋ ๊ฒ ์ข์๊น?
1๏ธโฃ ์ฃผ์ด์ง ๋ฌธ์ ๋ฅผ ๋น์ทํ ๊ตฌ์กฐ์ ๋ ์์ ๋ฌธ์ ๋ก ๋๋ ์ ์๋ ๊ฒฝ์ฐ
2๏ธโฃ ์ค์ฒฉ๋ ๋ฐ๋ณต๋ฌธ์ด ๋ง๊ฑฐ๋ ๋ฐ๋ณต๋ฌธ์ ์ค์ฒฉ ํ์๋ฅผ ์์ธกํ๊ธฐ ์ด๋ ค์ด ๊ฒฝ์ฐ
โ๏ธ ์ฌ๊ท๋ฅผ ์ ์ฉํ ์ ์๋ ๋๋ถ๋ถ์ ๊ฒฝ์ฐ์ ์ฌ๊ท๋ฅผ ์ ์ฉํ ์ฝ๋๊ฐ ๋์ฑ ๊ฐ๊ฒฐํ๊ณ ์ดํดํ๊ธฐ ์ฝ๋ค.
๐ฃ ์ฌ๊ท์ ์ผ๋ก ์ฌ๊ณ ํ๊ธฐ
1๏ธโฃ ์ฌ๊ท ํจ์์ ์ ๋ ฅ๊ฐ๊ณผ ์ถ๋ ฅ๊ฐ ์ ์ํ๊ธฐ
โฐ ๋ฌธ์ ๋ฅผ ๊ฐ์ฅ ์ถ์์ ์ผ๋ก, ๊ฐ์ฅ ๋จ์ํ๊ฒ ์ ์ํ๋ค.
โฐ ํจ์์ ์ ์ถ๋ ฅ ๊ฐ์ ์ ํ๋ ๊ฒ์ ๊ทธ ์ฒซ ์ถ๋ฐ์ ์ด๋ค.
2๏ธโฃ ๋ฌธ์ ๋ฅผ ์ชผ๊ฐ๊ณ ๊ฒฝ์ฐ์ ์๋ฅผ ๋๋๊ธฐ
โฐ ๋ฌธ์ ๋ฅผ ์ชผ๊ฐค ๊ธฐ์ค์ ์ ํ๊ณ , ์ ํ ๊ธฐ์ค์ ๋ฐ๋ผ ๋ฌธ์ ๋ฅผ ํฐ ๊ฒฝ์ฐ์ ์์ ๊ฒฝ์ฐ๋ก ๊ตฌ๋ถํ ์ ์๋์ง ํ์ธํ๋ค.
โฐ ์ ๋ ฅ๊ฐ์ด๋ ๋ฌธ์ ์ ์์์ ํฌ๊ธฐ๋ฅผ ๊ณ ๋ คํ๋ค.
3๏ธโฃ ๋จ์ํ ๋ฌธ์ ํด๊ฒฐํ๊ธฐ
โฐ ๋ฌธ์ ๋ฅผ ์ฌ๋ฌ ๊ฒฝ์ฐ๋ก ๊ตฌ๋ถํ ๋ค์, ๊ฐ์ฅ ํด๊ฒฐํ๊ธฐ ์ฌ์ด ๋ฌธ์ ๋ถํฐ ํด๊ฒฐํ๋ค -> ์ฌ๊ท์ผ ๊ธฐ์ด
โฐ ์ฌ๊ท์ ๊ธฐ์ด๋ ๋์ค์ ์ฌ๊ท์ ํ์ถ ์กฐ๊ฑด์ ๊ตฌ์ฑํ๋ค.
4๏ธโฃ ๋ณต์กํ ๋ฌธ์ ํด๊ฒฐํ๊ธฐ
โฐ ๋จ์์๋ ๋ณต์กํ ๊ฒฝ์ฐ๋ฅผ ํด๊ฒฐํ๋ค.
5๏ธโฃ ์ฝ๋ ๊ตฌํํ๊ธฐ
// ์ฌ๊ท ํจ์์ ํ
ํ๋ฆฟ
function recursive(input1, input2, ...) {
// base case : ๋ฌธ์ ๋ฅผ ๋ ์ด์ ์ชผ๊ฐค ์ ์๋ ๊ฒฝ์ฐ
if (๋ฌธ์ ๋ฅผ ๋ ์ด์ ์ชผ๊ฐค ์ ์์ ๊ฒฝ์ฐ) {
return ๋จ์ํ ๋ฌธ์ ์ ํด๋ต;
}
// recursive case : ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ
return ๋ ์์ ๋ฌธ์ ๋ก ์๋กญ๊ฒ ์ ์๋ ๋ฌธ์
}
๐ฃ ์์
โ๏ธ ์์ฐ์๋ฅผ ์ ๋ ฅ๋ฐ๊ณ , ์ ๋ ฅ๋ฐ์ ์๋ถํฐ 1๊น์ง์ ์์ฐ์๋ฅผ ๋ชจ๋ ๊ณฑํ ๊ฐ์ ๋ฆฌํดํ๋ ์ฌ๊ท ํจ์
function fac(n) {
if(n === 1) return 1;
return n * fac(n-1);
}
'CodeStates > learning contents' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
S3) Unit 2. [์ฌ์ฉ์ ์นํ ์น] UI/UX (0) | 2023.02.15 |
---|---|
S3) Unit 1. [์๋ฃ๊ตฌ์กฐ/์๊ณ ๋ฆฌ์ฆ] JSON.stringify (0) | 2023.02.14 |
Section 2. [๊ธฐ์ ๋ฉด์ ] (0) | 2023.02.10 |
S2) Unit 10. [Web Server] Refactor Express (0) | 2023.02.07 |
S2) Unit 10. [Web Server] CORS (0) | 2023.02.06 |