백준 10872 JAVA 팩토리얼

출처: 백준 페이지

수정 전 코드

import java.util.Scanner;


public class b10872 {

	public static void main(String[] args) {
		int sum=0;
		
		Scanner sc=new Scanner(System.in);
		int num=sc.nextInt();
		
		 for(int i=0;i<num.length;i--) {
			 sum*=num[i];
		 } 
	}

}

일단 이 문제의 카테고리가 '재귀'였는데 나는 재귀를 구현하지 못했다.

수정 후 코드

import java.util.Scanner;


public class b10872 {

	public static void main(String[] args) {
		
		Scanner sc=new Scanner(System.in);
		
		int n = sc.nextInt();
		sc.close();
		
		int sum=factorial(n); // factorial 재귀함수 호출. 매개변수로 n 갖는다. 
		System.out.println(sum);
		 } 
	
	public static int factorial(int n) { // factorial 함수 호출 시 매개변수가 n이었으므로 int n으로 값을 담는다. 
		if(n==0){ // 0!=0
			return 1;
		}
		if(n==1) { // 1!=1
			return 1;
		}
		return n*factorial(n-1); // 5!=5*4!, 4!=4x3!.. 같은 식으로 진행된다. 
	}

}
  1. factorial(n)이라는 재귀함수를 따로 선언해주었다. 매개변수로 n을 갖는다. main함수에서 factorial 함수를 호출해준다.
  2. n x n! 팩토리얼 형태로 구현하였다.
    결국 5!=5x4!, 7!=7x6! .. 와 같은 형식으로 구하고자 하는 팩토리얼(n!)의 n은 그대로 곱해주고 n-1은 (n-1)!의 형태로 존재하기 때문이다.

좋은 웹페이지 즐겨찾기