[JAVA] 정리/파일(file)

파일(file) - 4. 파일 조작(재귀 메소드)

쎈코 2023. 2. 27. 16:01

메소드 사용 + 파일 디렉토리 조작

선언 + 호출
test();

}


//재귀 메소드(Recursive Method) <- 자기가 자기를 계속 호출하는 메소드
public static void test() {

System.out.println("메소드 호출");

//java.lang.StackOverflowError
test(); //자기가 자기를 호출 > 에러 발생(X) > 재귀 호출(Recursive Call)
//쌍둥이를 부른거라고 생각 -> 같은 애는 아니지만 메소드를 계속 호출 : 무한 루프 > 메모리 영역이 계속 쌓이고 쌓임
//뭔가를 반복적으로 하고 싶을때 함. 메소드 호출 특성을 통한 반복

 

 

 

재귀메소드 예시 1)

private static void m14() {

int n = 1;
m15(n);

}

private static void m15(int n) {

//for문이나 while문이 재귀호출을 대체하지 못하는 때가 있음 > 그때 사용을 위해 배우기
System.out.println(n);
n++;
// if(조건) {       //조건은 정해진게 없음
if(n < 10) {
     m15(n);      //재귀 호출
}                      //자기 자신을 호출하는데 호출하면서 점점 커짐(n++ 때문)

}

 

 

재귀메소드 예시 2) 팩토리얼

private static void m16() {
      팩토리얼
     4! = 4 * 3 * 2 * 1 = 24

     int n = 4;

     int result = m17(n);
     System.out.println(result);

 

     result = factorial(n);

     System.out.printf("%d! = %d\n", n, result);

}

 

private static int m17(int n) {

     System.out.println(n);
     int result = (n == 1) ? 1 : m17(n-1); //n이 1이면 1, 아니면 n-1을 다시 m17(int n)값으로 돌려줌
     return result;
}

 


private static int factorial(int n) {
     return (n == 1) ? 1 : n * factorial(n - 1);           // 재귀 호출
}                                                                           //n이 1이면 1출력, 아니면 n * factorial(n-1)