Note:
- 순열은 n개의 항목 중이서 r개를 선택하여 줄을 세우고 식으로 쓰면 nPr 이라고한다.
- 예를 들면 5P5 은 5 * 4 * 3 * 2 * 1 와 같이 식이 정의 된다.
- 거꾸로 보면 1부터 n 까지 곱하게 되는데 이를 n의 계승 이라고하고 기호를 n! 이라고 사용한다.
- 그리고 n 팩토리얼 이라고 부른다.
- n! = nPn = 1 * 2 * 3 * (n-2) * (n-1) * n 과 같이 식을 정의 한다.
JAVA에서 팩토리어를 구현 하기 위해서는 재귀를 사용을 해야한다.
위의 팩토릴얼 식에서는 N 값이 있다면 N * (N - 1) * (N - 2) * ... * 1
이런 식으로 식을 구한다.
그렇다면 재귀 프로그래스 함수에서는 반복적인 함수의 호출을 이용한다.
그리고 n - 1 씩 감소되게 인자를 -1값씩 감소하게 개발을 한다.
후에 stop 조건식을 만들어 주어야 한다.
stop의 조건의 경우 n 이 계속해서 -1 로 감소가 되기 때문에 어느 순간에는 1 이 될것이다.
그렇게 때문에 1 과 같을 때 함수의 재호출을 stop 시켜주면 된다.
public class Factorial {
public static void main(String[] args) {
int input = 4;
int result = progress(input);
System.out.println("Result :: " + result);
}
public static int progress(int n) {
System.out.println(n);
if (n <= 1) {
return n;
}
return progress(n - 1) * n;
}
}
위의 자바코드를 실행을 했을때 4 팩토리얼을 하였기 때문에 4 , 3, 2, 1 이 콘솔에 찍히고
1이 될때 stop 된다. 계속 나열된 n 을 곱해 주기 때문에 4 * 3 * 2 * 1 이런식으로 작성이 된다.