백준 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!.. 같은 식으로 진행된다.
}
}
- factorial(n)이라는 재귀함수를 따로 선언해주었다. 매개변수로 n을 갖는다. main함수에서 factorial 함수를 호출해준다.
- n x n! 팩토리얼 형태로 구현하였다.
결국 5!=5x4!, 7!=7x6! .. 와 같은 형식으로 구하고자 하는 팩토리얼(n!)의 n은 그대로 곱해주고 n-1은 (n-1)!의 형태로 존재하기 때문이다.
Author And Source
이 문제에 관하여(백준 10872 JAVA 팩토리얼), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@brandy_kim/백준-10872-JAVA-팩토리얼저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)