[μκ³ λ¦¬μ¦-PS] Java μμ μ¬κ· νΈμΆλ‘ ν©ν 리μΌμ ꡬννλ λ°©λ²
μ¬κ·

μ¬κ·λ λ³Έλμ κ²μΌλ‘ λ€μ λμκ°λ κ²μ λ§ νλ€κ³ κ΅¬κΈ κ²μμμ λ°μ·ν΄ μλ€.
μ΄ λ§μ μ΄λ€ μ¬κ±΄μ΄ μκΈ° μμ μ ν¬ν¨νκ³ λ€μ μκΈ° μμ μ μ¬μ©νμ¬ μ μλ λ μ΄λ₯Ό μ¬κ·μ (Recursive) μ΄λΌκ³ νλ€.
λ³Έλμ κ²μΌλ‘ λ€μ λμκ°λ€λ κ²μ μ’λ μ§κ΄μ μΌλ‘ 보μ¬μ£Όμλ©΄

μ΄λ¬ν κ²λ€μ΄ λ°λ‘ μ¬κ·μ΄λ€.
μ¬κ· νΈμΆ
νλ‘κ·Έλλ°μμλ μ΄λ° μ¬κ·μ ν¨κ³Όλ₯Ό μ΄μ©νλ©΄ μ’ λ κ°κ²°ν νλ‘κ·Έλλ°μ ꡬμ¬ν μ μλλ° μ¬κ· νΈμΆμ κ°μ₯ μ ννν μ μλ κ²μ΄ ν©ν λ¦¬μΌ μ΄λ€.
ν©ν 리μΌ
ν©ν 리μΌμ 1λΆν° N κΉμ§μ λͺ¨λ μλ₯Ό κ³±νλ κ²μΈλ°, λ€μκ³Ό κ°μ΄ λλνλ‘ ν©ν 리μΌμ μ μνλ€.

μ΄ κ³Όμ μ μ½λλ‘ λ§λ€μ΄ 보μλ©΄ λ€μκ³Ό κ°λ€
μ¬κ· νΈμΆμ μ¬μ©νμ§ μμ ν©ν λ¦¬μΌ ν¨μ
class Main {
int factorialNonR(int num){
int ans = 1;
for (int i = 1; i <= num; i++) {
ans = ans * i;
}
return ans;
}
}
μμ κ°μ΄ μ¬κ· νΈμΆμ μ¬μ©νμ§ μμΌλ©΄ forλ¬Έμ μ΄μ©νμ¬ i λΆν° 1 κΉμ§μ λͺ¨λ κ³±μ ans λΌλ λ³μμ μ μ₯νκ³ return νκ² λλ€.
νμ§λ§ μ¬κ·λ₯Ό μ¬μ©νλ¨λ€λ©΄ λμ± κ°κ²°νκ³ μ§κ΄μ μΈ μ½λκ° λ κ²μ΄λ€.
μ¬κ· νΈμΆμ μ¬μ©ν ν©ν λ¦¬μΌ ν¨μ
class Main{
int factorial(int num){
if(num > 0) return num * factorial(num-1);
else return 1;
}
}
ifμ μμ 보면 return μ νλλ° νμ¬μ numκ³Ό factorial(num-1)μ νΈμΆ κ²°κ³Όλ₯Ό κ³±νλλ°, λ factorial(num-1) μ factorial(num-1) * factorial(num-2)λ‘ λλ μ§ μ μλ€.
μ μ μννλ€κ° nμ΄ 0μ΄ λλ μκ° 1μ 리ν΄ν΄μ λ€μ μν₯μμΌλ‘ μ¬λΌκ°λ€.