Study/Java

자바 재귀함수를 이용하여 팩토리얼 구하기

토기발 2022. 3. 21. 16:31

재귀함수를 이용하여 팩토리얼을 구하는 프로그램을 만들겠습니다.

재귀함수란 메소드가 자신을 호출하는 것을 말합니다.

끝나는 점을 정해주지 않으면 무한히 자신을 호출하므로, 끝나는 지점을 반드시 구현해야 합니다.

 

팩토리얼이란 그 수보다 작거나 같은 모든 양의 정수의 곱이며, 숫자 뒤 ! 로 표기합니다.

예를 들면 5! 는 5*4*3*2*1 =120 입니다. 


 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import java.util.*;
public class TestObject {
    public static void main(String[] args)    {
        Scanner in = new Scanner(System.in);
        System.out.println("팩토리얼 수를 입력 : ");
        int facSu = in.nextInt();
        
        int res = factorial(facSu);
        System.out.printf("%d의 팩토리얼 값은 %d 입니다.\n",facSu,res);
 
    }
    public static int factorial(int n) {
        if (n<=1)
            return n;
        else return factorial(n-1)*n;
    }
    
}
 
cs

 


 

키보드로 입력받기 위해 Scanner를 사용합니다.

입력된 수를 int facSu 변수에 받습니다.

팩토리얼 값을 받을 변수 int res 도 생성합니다.

 

public static int factorial(int n) {
		if (n<=1)
			return n;
		else return factorial(n-1)*n;

 

재귀함수를 작성합니다.

만약 5의 팩토리얼을 구한다면 5! = 5*4! 이므로

5*factorial(4) =120이 됩니다.

계산법은 이렇게 됩니다.

n=5 : 5*factorial(4)

n=4 : 4*factorial(3)

n=3 : 3*factorial(2)

n=2 : 2*factorial(1)

n=1 : 1(if조건에 부합하므로 호출 끝)

 

factorial(1)=1 

factorial(2)=2

factorial(3)=6

factorial(4)=24

factorial(5)=120

 

System.out.printf("%d의 팩토리얼 값은 %d 입니다.\n",facSu,res);

입력한 수와 팩토리얼 값을 출력합니다.

 

잘 출력되었습니다.