package class04;
// [함수 심화] : 재귀
// 재귀함수(순환함수) : 주어였던게 목적어이기도 할때 ex) 팩토리얼
// 4!:4x3!=23 / N!=N*(N-1)! / f(n)=n*f(n-1)
// 만약 이해가 안된다면 함수 초반부분 복습하기
public class Test07 {
static int fac(int n) {
System.out.println(n);
if (n == 1) {
return 1;// 1*0이 아니라 그냥1임 , 종료조건
}
return n * fac(n - 1); // return에 포함되있는 fac(n-1)에 대한걸 모르니까 계속해서 n*fac(n-1)을 반복하다 보니 메모리 부족..
// 재귀함수도 "종료조건"이 필요함!
}
public static void main(String[] args) {
System.out.println(fac(4));
}
}
# Exception in thread "main" java.lang.StackOverflowError
무한 루프에 빠져 메모리 할당 가용범위를 넘어 발생하는 Exception이다.
재귀 메소드를 확인해서 종료 조건을 잘 입력했는지 확인을 안할 시 발생할 수 있다.
'개발자노트' 카테고리의 다른 글
함수) 배열을 넣으면 랜덤하게 '홀수만' 뽑기 (0) | 2022.06.14 |
---|---|
함수) 재귀함수, 팩토리얼을 이용한 이해2 (0) | 2022.06.14 |
함수) output O / input O인 함수 (0) | 2022.06.14 |
함수) output O / input X 인 함수2 (0) | 2022.06.14 |
함수) output O / input X 인 함수 (0) | 2022.06.14 |