본문 바로가기
JAVA

팩토리얼 함수 코딩, 알고리즘 , Factorial Algorithm (반복함수)

by Coding_mon 2020. 2. 24.

팩토리얼은 n부터 까지의 정수를 곱하는 단순한 연산이라고 할 수 있는데요

예시로 5!는 5 * 4 * 3 * 2 * 1 = 120 입니다

 

반복적인 곱의 연산 형태이며 알고리즘 코드로 구현 해보겠습니다.

 

자바로 구현 했으며,

물론 다른 언어도 방식은 똑같습니다.


반복함수를 사용하여 팩토리얼 코드 만들기

  n! = n*(n-1)*(n-2).....(n-(n-1)) 에서 마지막에 곱해진는 정수가 1이 될때까지 곱셈을 합니다.

 반복문이므로 for문과 while문중 하나를 선택해서 구현하는데

 정해진 조건이 있으므로 for문을 사용하여 구현을 합니다.


public static long factorial(int n) {  // long형으로 반환 합니다. 길이가 짧으면 int형도 상관없습니다.

    int i = 0; // n을 감소시키기 위한 변수
    int var = 1; // 감소하는 n의 값을 담을 변수
    long result = 1; // 결과 값을 담을 변수 입니다. 초기 값은 1로 지정합니다.

    if (n >= 1) { // n이 정수형으로 팩토리얼이 계산 가능한 경우인지 먼저 확인합니다.
       for (i = 0; i < n; i++) { // i의 값을  증가 시킵니다.
            var = n-i;  // n의 값을 변수에 지정
            result = result*var; // n과 감소된 n을 곱하여 담습니다.

            if((n-i)==1) { // 계속 감소해 나가면서 n-i 의 값이 1이 되었을때 (마지막 부분)
            return result; // 결과를 반환하고 함수를 종료 합니다.
            }
        }

    }
    else if (n == 0) { // 0!에 대한 경우는 따로 분류
        result = 1;
        return result;
    }
    else {
        System.out.println("Error"); // 그외 실수와 음수는 에러처리
    }
    return 0;
}


입력받는 정수의 범위까지 고려하고 0!까지 포함시켜

최대한 자세히 설명을 해봤습니다

팩토리얼 같은 경우는 생각하는건 쉬워보이지만

반복함수로 표현하기까지

알고리즘을 생각하는게 약간 까다로운것 같습니다.

도움이 되셨으면 좋겠습니다. 땡큐

 

댓글