본문 바로가기

컴퓨터/백준 알고리즘

백준 알고리즘 - 27433번: 팩토리얼 2 [Java]

문제: https://www.acmicpc.net/problem/27433

 

27433번: 팩토리얼 2

0보다 크거나 같은 정수 N이 주어진다. 이때, N!을 출력하는 프로그램을 작성하시오.

www.acmicpc.net

1. 코드

import java.util.*;
public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int N = sc.nextInt();
		System.out.println(factorial(N));
	}
	
	public static long factorial(int n) {
		if(n == 0) return 1;
		return n * factorial(n - 1);
	}
}

2. 설명

재귀를 기반으로 한 팩토리얼입니다. factorial 함수의 인자인 n값이 0이라면 1을 아니라면 n * factorial을 반환하면 됩니다. 이 때 반환형을 long으로 하지 않으면 오버플로우가 발생하기에 long형으로 반환해주어야 합니다.

3. 정리

  1. 오버플로우만 조심하면 된다.