팩토리얼은 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!까지 포함시켜
최대한 자세히 설명을 해봤습니다
팩토리얼 같은 경우는 생각하는건 쉬워보이지만
반복함수로 표현하기까지
알고리즘을 생각하는게 약간 까다로운것 같습니다.
도움이 되셨으면 좋겠습니다. 땡큐
'JAVA' 카테고리의 다른 글
자바상식 (0) | 2023.12.21 |
---|---|
자바로 만든 스윙 기반의 GUI 프로그램 (1) | 2020.09.13 |
프로그래머스 자바 전화번호 목록 (0) | 2020.09.10 |
피보나치 수열 함수 코딩, 알고리즘, Fibonacci Algorithm 코드 (0) | 2020.02.25 |
팩토리얼 함수 코딩, 알고리즘 ,Factorial Algorithm (재귀함수) (0) | 2020.02.24 |
댓글