-
[Algorithm] μ¬κ·Algorithm 2023. 5. 5. 23:54
μ¬κ·λ?
νλμ ν¨μμμ μκΈ° μμ μ λ€μ νΈμΆν΄μ μμ μ μννλ μκ³ λ¦¬μ¦μ΄λ€.
int func1(int n) { if (n == 0) return 0; return n + func1(n - 1); }μ¬κ·λ‘ μ΄λ€ λ¬Έμ λ₯Ό μμ νμμΌλ‘ ν΄κ²°νκΈ° μν΄ νμν κ³Όμ μ λ€μκ³Ό κ°λ€! (μΆμ²: μκ· μ΄)
- μμ νμμ μ‘΄μ¬νλ λͺ¨λ λ΅μ νλμ© κ²μ¬νλ―λ‘, 걸리λ μκ°μ κ°λ₯ν λ΅μ μμ μ νν λΉλ‘νλ€. μ΅λ ν¬κΈ°μ μ λ ₯μ κ°μ νμ λ λ΅μ κ°μλ₯Ό κ³μ°νκ³ μ΄λ€μ λͺ¨λ μ ν μκ° μμ μμ±ν μ μμ μ§λ₯Ό κ°λ νλ€.
- κ°λ₯ν λͺ¨λ λ΅μ ν보λ₯Ό λ§λλ κ³Όμ μ μ¬λ¬ κ°μ μ νμΌλ‘ λλλ€. κ° μ νμ λ΅μ ν보λ₯Ό λ§λλ κ³Όμ μ ν μ‘°κ°μ΄ λλ€.
- κ·Έμ€ νλμ μ‘°κ°μ μ νν΄ λ΅μ μΌλΆλ₯Ό λ§λ€κ³ , λλ¨Έμ§ λ΅μ μ¬κ· νΈμΆμ ν΅ν΄ μμ±νλ€.
- μ‘°κ°μ΄ νλλ°μ λ¨μ§ μμ κ²½μ°, νΉμ νλλ λ¨μ§ μμ κ²½μ°μλ λ΅μ μμ±νμΌλ―λ‘, μ΄κ²μ κΈ°μ μ¬λ‘ (base condition)λ‘ μ νν΄ μ²λ¦¬νλ€.
μνμ κ·λ©λ²
1λ² λλ―Έλ Έκ° μ°λ¬μ§λ€. → 2λ² λλ―Έλ Έκ° μ°λ¬μ§λ€. → kλ² λλ―Έλ Έκ° μ°λ¬μ§λ©΄, k+1λ² λλ―Έλ Έλ μ°λ¬μ§λ€.
void func1(int n) { if (n == 0) return; cout << n << ' '; func1(n - 1); }μμ ν¨μ νΈμΆμ λ€μκ³Ό κ°μ΄ μ΄λ£¨μ΄μ§λ€.
func1(3) νΈμΆ → 3 μΆλ ₯ → func1(2) νΈμΆ → 2 μΆλ ₯ → func1(1) νΈμΆ → 1 μΆλ ₯ → func1(0) νΈμΆ → μ’ λ£
μ¦, func(1)μ΄ 1μ μΆλ ₯νκ³ ,
func1(k)κ° k, k-1, k-2, ..., 1μ μΆλ ₯νλ©΄
func1(k+1)μ k+1, k, k-1, … , 1μ μΆλ ₯νλ€.
μ¬κ·μ μμ΄μ κ·λ©μ μ¬κ³ κ° μ€μνλ€!
μ¬κ· ν¨μμ 쑰건
νΉμ μ λ ₯μ λν΄μλ μκΈ° μμ μ νΈμΆνμ§ μκ³ μ’ λ£λμ΄μΌ νλ€. (base condition)
λͺ¨λ μ λ ₯μ base conditionμΌλ‘ μλ ΄ν΄μΌ νλ€.
int func1(int n) { if (n == 0) return 0; return n + func1(n - 1); }μ ν¨μμμ n = 0μΌ λ, μκΈ° μμ μ νΈμΆνμ§ μκ³ μ’ λ£κ° λλ€.
κ·Έλ κΈ° λλ¬Έμ n = 0μΌ λκ° base conditionμ΄ λλ€.
μ¬κ· νΉμ§
- ν¨μμ μΈμλ‘ μ΄λ€ κ²μ λ°κ³ , μ΄λκΉμ§ κ³μ°ν νμ μκΈ° μμ μκ² λ겨μ€μ§ λͺ ννκ² μ ν΄μΌ νλ€.
- λͺ¨λ μ¬κ· ν¨μλ λ°λ³΅λ¬Έλ§μΌλ‘ λμΌν λμμ νλ ν¨μλ₯Ό λ§λ€ μ μλ€.
- μ¬κ·λ λ°λ³΅λ¬ΈμΌλ‘ ꡬννμ λμ λΉν΄ μ½λκ° κ°κ²°νμ§λ§, λ©λͺ¨λ¦¬/μκ°μλ μν΄λ₯Ό λ³Έλ€.
- ν ν¨μκ° μκΈ° μμ μ μ¬λ¬ λ² νΈμΆνκ² λλ©΄ λΉν¨μ¨μ μΌ μ μλ€.
- μ¬κ· ν¨μκ° μκΈ° μμ μ λΆλ₯Ό λ μ€ν μμμ κ³μ λμ μ΄ λλ€.
κ΄λ ¨ λ¬Έμ λ€
'Algorithm' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Algorithm] μ¬λΌμ΄λ© μλμ° (0) 2023.05.09 [Algorithm] λμ ν© (0) 2023.05.04 [Algorithm] ν¬ ν¬μΈν° μκ³ λ¦¬μ¦ (Two Pointer Algorithm) (0) 2023.05.02 [Algorithm] λ°±μ€ 2003 μλ€μ ν© 2 (C++) (0) 2023.05.01 [Algorithm] BFS & DFS (0) 2022.03.15