순간을 기록으로

[Java] 팩토리얼 값 구하기 | 인프런 | 재귀 본문

Problem Solving

[Java] 팩토리얼 값 구하기 | 인프런 | 재귀

luminous13 2022. 4. 21. 14:53

문제

자연수 N을 입력하면 N!(팩토리얼)을 구하는 프로그램을 작성하세요

풀이

 

팩토리얼은 다음과 같습니다 
5!

= 5*4!

= 5*4*3!

=5*4*3*2!

=5*4*3*2*1!

=5*4*3*2*1*0!

 

0!은 1과 같으므로 결국 5!은 5*4*3*2*1과 같습니다. 구조를 보면 같은 과정이 반복되고 있음을 알 수 있습니다. 따라서 재귀함수로 팩토리얼 값을 구할 수 있습니다. 따라서 재귀함수안에 if-else 구조를 가지고 문제를 풀 수 있습니다.

 

import java.util.Scanner;

public class Main {
    public static int recursion(int n) {
        if (n==0) { // 0!이면 탈출
            return 1;
        }
        else {
            return n * recursion(n-1);
        }
    }

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        System.out.println(recursion(n));
    }
}
Comments