μ¬κ· ν¨μ : μμ μ νΈμΆνλ μ κΈ°ν ν¨μ
μ¬κ·(recursion)ν¨μλ νΈμΆλ ν¨μκ° μκΈ° μμ μ λ€μ νΈμΆνλ κ²
컀λ€λ λ¬Έμ λ₯Ό μͺΌκ° λΆλ¬Έ λ¬Έμ λ‘ λ§λ€μ΄ ν΄κ²°ν¨μΌλ‘μ¨ μ 체 λ¬Έμ λ₯Ό νμ΄ λκ°λ ꡬ쑰λ₯Ό μ€κ³ν λ λ°λμ νμ
- ελ€μ, λλ²
- ζΈλμμ€λ€, λμκ°λ€, λ§μΉλ€
μ¬κ·ν¨μλ‘ ν©ν λ¦¬μΌ κ΅¬ννκΈ°
μνμμ μ΄λ€ μ nμ ν©ν 리μΌ(factorial)μ 1λΆν° nκΉμ§ κ³±μ μλ―Έ, n! μ΄λΌκ³ νκΈ° (0! μ 1)
\[4! = 1 \times 2 \times 3 \times 4\] \[4! = 3! \times 4\] \[n! = (n-1)! \times n\]def factorial(n):
if n <= 0: #1 μ¬κ· ν¨μκ° λ μ΄μ νΈμΆλμ§ μλλ‘ νλ 'νΉμ 쑰건'
return 1
return factorial(n-1)*n
if __name__ == "__main__":
factorial(6)
μ€ν νλ μμΌλ‘ μ¬κ· ν¨μ μ΄ν΄νκΈ°
- μ€ν νλ μ
- ν¨μ νΈμΆ μ λ©λͺ¨λ¦¬μ μκΈ°λ 곡κ°
- ν¨μ μ€νμ νμν μ§μ λ³μλ€μ΄ ν λΉλ¨
- ν¨μλ₯Ό νΈμΆ νμ λ μμ±, ν¨μ μ€νμ΄ μ’ λ£ λμμ λ μλ©Έ
- μν μ 보λ₯Ό κ°μ§κ³ μλ μ§μ λ³μλ μλ‘ λ€λ₯Έ μ€ν νλ μμ μ μ₯
- ν¨μ λ΄μμ μκΈ° μμ μ νΈμΆν΄λ κ°μ κΈ°λ₯μ μ½λλ₯Ό μ€ν, μ€ν κ²°κ³Όλ μλ‘ λ€λ₯Έ μ€ν νλ μμ μλ μ§μ λ³μμ μ μ₯
μ¬κ· νΈλ¦¬
- ννλ λΉμ·νμ§λ§ ν¬κΈ°κ° λ€λ₯Έ μ¬λ¬ μμ λ¬Έμ λ‘ λλ ν λ΅μ ꡬνκ³ κ·Έ λ΅μ ν©μΉ¨
μ¬κ· ν¨μ ꡬν
- μΈμ μ΄λ€ λ§€κ° λ³μλ₯Ό κ°μ§κ³ νΈμΆν μ§ μ ν΄μΌ ν¨
- νΈμΆμ μ μ§μμΌ μ€ κΈ°μ μ¬λ‘(base case)κ° νμ
- μ¬κ· ν¨μλ₯Ό μ νμ©νλ©΄ 볡μ‘ν μκ³ λ¦¬μ¦μ κ°κ²°νκ² μμ± κ°λ₯
- λͺ¨λ μ¬κ· ν¨μλ λ°λ³΅λ¬ΈμΌλ‘ ꡬν κ°λ₯
- μ¬κ· ν¨μκ° λ°λ³΅λ¬Έ λ³΄λ€ μ 리ν κ²½μ°κ° μκ³ λΆλ¦¬ν κ²½μ°κ° μμ
- μ»΄ν¨ν°κ° ν¨μλ₯Ό μ°μμ μΌλ‘ νΈμΆνλ©΄ μ»΄ν¨ν° λ©λͺ¨λ¦¬ λ΄λΆμ μ€ν νλ μμ μμΈλ€
- κ·Έλμ μ€νμ μ¬μ©ν΄μΌ ν λ ꡬνμ μ€ν λΌμ΄λΈλ¬λ¦¬ λμ μ μ¬κ· ν¨μλ₯Ό μ΄μ©νλ κ²½μ°κ° λ§λ€