ν¨μ λ΄μμ μκΈ° μμ μ λ€μ νΈμΆνλ κ²
β μκΈ°μμ μ κ³μ λ€μ νΈμΆνλ€λ³΄λ λ°λ³΅μ΄ λ¨
recursion()
λ©μλ νΈμΆνλ©΄ 첫 μ€νλ¬Έμ΄ λ€μ νΈμΆλμ΄ κ³μ λ°λ³΅
λͺ¨λ μ¬κ·ν¨μλ λ°λ³΅λ¬Έ(for/whileλ¬Έ)μΌλ‘ μΈ μ μμ
Base case : κ°μ₯ μμ λ¬Έμ λ₯Ό ν΄κ²°νλ μ½λ & μ¬κ·λ₯Ό λ©μΆλ μ½λ
( λ¬Έμ λ₯Ό λμ΄μ μͺΌκ°€ μ μλ κ²½μ° )
Recursive case : λ°°μ΄μ 첫 μμ + λλ¨Έμ§ μμκ° λ΄κΈ΄ λ°°μ΄μ λ°λ ν¨μ
(μκΈ° μμ μ κ³μ λ°λ³΅ νΈμΆ νμ¬ λ¬Έμ λ₯Ό μκ² μͺΌκ°λκ°λ μ½λ)
but, λ©λͺ¨λ¦¬λ λ무 λ§μ΄ μ¬μ©νκ³ μ½λμ νλ¦μ μμΈ‘νκΈ° λ무 νλ€κΈ° λλ¬Έμ μλΉμ€ λ‘μ§μ μ¬μ©ν κ²½μ°μλ μ μμ (λμ€μ λ°°μΈ λ¬Έλ²μ μν΄ λ°°μ°λ κ²)
Ex.
num
μ 맀κ°λ³μλ‘ κ°μ§sum
μ΄λΌλ λ©μλκ° μκ³ , 1λΆν° numκΉμ§μ ν©κ³λ₯Ό ꡬν΄μΌ ν κ²½μ°μstatic int sum (int num) { //1λΆν° numμ λ€μ΄κ° μ«μκΉμ§μ ν©κ³λ₯Ό ꡬν κ±΄λ° if (num == 1) return 1; //Base case //λ§μ½ numμ΄ 1μ΄λ©΄ 1리ν΄νκ³ else return num + sum(num - 1); //Recursive case //μλ κ²½μ° Sum μ 첫λ²μ§Έ μμ + 첫 μμ μ κ±°νκ³ Sum μ λλ¨Έμ§ μμκ° λ΄κΈ΄ κ² }
β¬οΈ μ μμμ λ§μ½ num = 5 λΌκ³ νλ€λ©΄,
λ©μλ μμ 쑰건μμ΄ μμ κ²½μ° κ·Έλ₯ sum(5) λμ νκ³ numμ μΆλ ₯νλ€λ©΄ μλλ κ·Έλ₯ 5κ° μΆλ ₯λ¨
νμ§λ§ λ°μ 쑰건μμ 보면 else λΆλΆμ sum(5)μΌ κ²½μ° β 5 + sum(4) λ₯Ό λΆλ¬μ€λ
μ¬κΈ°μ sum(4)λ λ€μ μ μμ numμ 4λ₯Ό λμ ν κ²κ³Ό κ°κΈ° λλ¬Έμ 4 + sum(3)μ΄ λ¨
μ΄λ κ² 3 + sum(2) / 2 + sum(1) λ‘ μ μ μͺΌκ°μ§λ€κ° numμ΄ 1μ΄ λλ©΄
μμ ifλ¬Έμμ μ΄ μμ λ©μΆκΈ° μν΄ μ‘°κ±΄μΌλ‘ 1μ 리ν΄νλΌκ³ λμ΄μμ
β else 쑰건μ 건λλ°κ³ 1 λ°ν
β κ²°κ΅μ μ μκΈ°μμ λ€μ΄ λν΄μ Έ 5 + 4 + 3 + 2 + 1 μ΄ λλ κ²
μ½λκ° κ°κ²°
μμ μ΄ μ©μ΄
λ³μ μ¬λ¬κ° μ¬μ©ν νμ X
μ½λμ νλ¦ λ°λ‘λ‘ νμ νκΈ° μ΄λ €μ
λ°λ³΅μ μΌλ‘ 맀μλλ₯Ό νΈμΆνλ©΄μ μ§μλ³μ, 맀κ°λ³μ, λ°νκ°μ λͺ¨λ process stack
μ μ μ₯νκ² λλλ° μ΄ κ³Όμ μ΄ λ°λ³΅λ¬Έμ λΉν΄ λ©λͺ¨λ¦¬λ₯Ό λ λ§μ΄ μ¬μ©
λ©μλ νΈμΆ, 맀μλ μ’ λ£ μ΄νμ λ€μ μκΈ°μμ 볡κ·λ₯Ό μν 컨ν μ€νΈ μ€μμΉ λΉμ©μ΄ λ°μ
λ¬Έμ μ ν¬κΈ°λ₯Ό μ μ μμ λ¨μλ‘ μͺΌκ°€ μ μμ΄μΌν¨
μ¬κ· νΈμΆμ΄ μ’ λ£λλ μμ μ΄ μ‘΄μ¬ν΄μΌ ν¨
μ£Όμ΄μ§ λ¬Έμ λ₯Ό λΉμ·ν ꡬ쑰μ λ μμ λ¬Έμ λ‘ λλ μ μλ κ²½μ°
λ°λ³΅λ¬Έμ μ€μ²© νμ(number of loops)κ° λ§κ±°λ μμΈ‘νκΈ° μ΄λ €μ΄ κ²½μ°
λ³μ μ¬μ©μ μ€μ¬ μ€λ₯ κ°λ₯μ±μ μ€μΌ κ²½μ°
λ°λ³΅λ¬ΈμΌλ‘ μμ±λ μ½λλ₯Ό λμ± κ°κ²°νκ³ μ΄ν΄νκΈ° μ½κ² μμ±νκ³ μΆμ κ²½μ°
μ€λ μ¬κ·ν¨μλ μ¬μ€ μ²μμ λ΄€μ λλ 머리λ‘λ 'μκΈ° μμ μ λΆλ¬μ¨λ€' λΌλ κ°λ
μ μ΄ν΄λ₯Ό νμ§λ§ λ§μ μ½λλ₯Ό 보λ 'μ μ½λκ° μ μκΈ° μμ μ λ€μ λΆλ¬μ€λ κ±°μ§..?' νλ μ μ΄ κ³μ μ΄ν΄κ° κ°μ§ μμλ€.
κ·Έλμ μμλ‘ 5λΌλ μλ₯Ό λμ
νμ¬ μ΄λ»κ² λμκ°λ κ±΄μ§ κ΅¬μ‘°λ₯Ό νλνλ μκ°ν΄λ³΄μλλ°,
μ²μμ μ΄κ²λ μ΄ν΄κ° μλΌμ λͺ»νλ€κ° μ μμ 'ν¨μλͺ
(μ«μ)' μ΄λ κ² μ λ λΆλΆμ΄ μκΈ° μμ μΌλ‘ λ€μ λμκ° κ·Έ μ μμ λ€μ λμ
μ νμ¬ μ μ μͺΌκ°μ§λ κ²μ΄λΌλ κ΅¬μ‘°κ° μ΄ν΄κ° λμλ€!!
μ΄ κ΅¬μ‘°λ₯Ό μ΄ν΄νλ€λ³΄λ νμ΄μ νΈλ λ¬Έμ μμλ μ μ©μ νμκ³ λ΄κ° μ΄ν΄ν μ μ λ€μ νμ΄μκ² μ€λͺ
νλ©° κ°μ΄ ν μ μμλ€.
λ¬Όλ‘ μμ§κΉμ§ μμ ν μ΄ν΄λ₯Ό ν κ² κ°μ§ μμ§λ§ λ 곡λΆν΄μΌκ² λ€ π βοΈ