알고리즘/구현 & 그리디 & 브루트포스

[백준]JAVA - 10872번 팩토리얼

K.두부 2022. 7. 20. 21:53
반응형
풀이

1. int형의 범위를 넘어서기 때문에 long 타입으로 풀어야함.

2. 0! 는 1이다.

 

import java.util.Scanner;

public abstract class Main{
    static Scanner sc = new Scanner(System.in);
    public static void main(String[] args) {
    
        long num = sc.nextLong();
		
        // 0! = 1
        if (num == 0) {
            System.out.println(1);
        } else {
            long sum = fatorial(num);
            System.out.println(sum);
        }
    }
	
    static long fatorial(long num){
        if (num == 1) {
            return 1;
        } else {
            return num * fatorial(num-1);
        }
    }
}
num
num-1
sum
10
9
10*fatorial(9)
9
8
10*9*fatorial(8)
8
7
10*9*8*fatorial(7)
7
6
10*9*8*7*fatorial(6)
6
5
10*9*8*7*6*fatorial(5)
5
4
10*9*8*7*6*5*fatorial(4)
4
3
10*9*8*7*6*5*4*fatorial(3)
3
2
10*9*8*7*6*5*4*3*fatorial(2)
2
1
10*9*8*7*6*5*4*3*2*fatorial(1)
1
return 1
3628800

 

반응형