백준 10872 팩토리얼

Montag·2023년 1월 30일
1

문제풀이

목록 보기
8/10

10872 팩토리얼

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

입력
첫째 줄에 정수 N(0 ≤ N ≤ 12)이 주어진다.

출력
첫째 줄에 N!을 출력한다.

예제 입력 1
10

예제 출력 1
3628800

예제 입력 2
0

예제 출력 2
1


나의 풀이

재귀함수에 대한 문제다
반복문이 아닌 메서드를 활용하여 구현한다

풀이가 간단하여 바로 작성 코드로 넘어가겠다

import java.util.Scanner;

public class _10872_팩토리얼 {
	
	public static int fac(int n) {
		if(n==0) {
			return 1;
		} else {
			return n*fac(n-1);
		}
	}
	
	public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);
		int N = sc.nextInt();
		
		System.out.println(fac(N));
	}

}

fac이라는 함수를 만들어서
다시 자신을 부르도록 만든다
fac의 인자가 0일 경우, 1을 출력한다
나머지 경우에는 주어진 숫자*fac(n-1)을 출력한다

fac(n-1)은 n-1*fac(n-2)를 호출하고
이것이 반복되는게 재귀함수이다

예를 들어 N이 10일 경우

fac(10) = 10 * f(9)
= 10 * 9 * fac(8)
... 이렇게 반복된다

profile
안녕하세요

1개의 댓글

comment-user-thumbnail
2023년 1월 31일

퍼가요~!@))))))))))

답글 달기