기초수학2 - factorial(!) 팩토리얼
팩토리얼 - 1부터 n까지의 곱이다. 5! , fact(5) = 5x4x3x2x1 = 120 그러면 0!의 답은 0? 그건 아니다. 정확히는 모르지만 수학에서 정한 규칙 때문에 0! = 1 1! = 1 이 둘 모두 답은 1이다.
choittolbok.tistory.com
팩토리얼에 대한 것은 이걸 참고 하면 좋다.
public class MainFunction_5 {
public static int factorial(int f) {
int sum = 1;
for(int i=2; i<=f; i++) {
sum *=i;
}
return sum;
}
public static void main(String[] args) {
System.out.println("5! = " + factorial(5));
}
}
for문을 이용한 함수는 이런 모양이다. 2부터 n번대까지 곱하면 끝
import java.util.Scanner;
public class FactiorialEx {
public static int factorial(int f) {
if(f == 0) {
return 1;
}
else {
return f * factorial(f - 1);
}
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("fac(?) : ");
int f = sc.nextInt();
System.out.println( f + "!의 값은 : " + factorial(f));
sc.close();
}
}
그런데 재귀함수를 이용하면 이런 모양이 된다. 본인을 불러내어 계산을 하는 방식인 재귀함수는 f*factorial(f-1) 이렇게 사용을 한다.
실행을 하게 되면 이런 과정으로 처리를 하게 됨
1. if 조건 5>1 true -> 5*(4)
2. if 조건 4>1 true -> 5*4*(3)
3. if 조건 3>1 true -> 5*4*3*(2)
4. if 조건 5>1 true -> 5*4*3*2*(1)
5. if 조건 5>1 true -> 5*4*3*2*1
재귀함수는 자바 뿐만 아니라 다양한 언어에서 활용되는 함수로 코드를 좀 더 간결하게 하고, for문으로 표현하기 어려운 것들에서 도움이 되는데 큰 숫자를 처리 할 때 느리다는 단점이 있다고 합니다. 각자의 장단점이 있으니 알아두고 적재적소에 활용하면 될 듯.. 아직은 어디서 활용을 해야할지 나도 잘 모르겠다.
'개발일지 > Java + Spring' 카테고리의 다른 글
[Java] 클래스 정의와 변수의 3가지 종류 (0) | 2021.09.27 |
---|---|
[Java] 0924 클래스의 구조 / 상위 클래스를 상속 받은 클래스 (0) | 2021.09.24 |
JVM이란? JVM의 구성요소 (0) | 2021.09.20 |
[Java] 함수 설명 + 만드는 방법 (1) | 2021.09.17 |
[Java] File 함수로 파일 탐색 + try-catch 예외처리 (0) | 2021.09.17 |