μ¬κ·ν¨μ (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));