글 작성자: 취업중인 피터팬
728x90

https://www.acmicpc.net/problem/10872

 

10872번: 팩토리얼

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

www.acmicpc.net

 

문제 설명

 

하나의 수가 주어지면 그 수부터 1까지 모든 수를 곱한 수를 구하는 문제입니다. 재귀를 이용하여 풀어보겠습니다.

 

문제 풀이

사실 이 문제에서 재귀와 반복문이 다를 것이 없습니다. 어떻게 재귀를 반복문처럼 쓰는지 밑에 코드로 보여드리겠습니다.

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
       Scanner sc = new Scanner(System.in);

       //팩토리얼 변수
       int n = sc.nextInt();

       int result = factorial(n);

        System.out.println(result);
    }

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

}

 해당 함수에 n-1을 매개변수로 넘겨주는 것이 핵심입니다. 그리고 return이 1일때는 더이상 재귀를 하면 안됩니다. n<=1이라고 선언한것은 0일때도 1를 출력해야되기 때문입니다.