ResursiveEx02-잘못된 재귀 메소드 정의

CODEDRAGON Development/Java

반응형

잘못된 재귀 메소드 정의

종료조건이 만독되지 않으면 무한 루프에 빠질 수 있습니다.

종료조건 및 종료조건의 검사위치를 로직 상 점검 하시기 바랍니다.

종료조건은 메소드의 실행과 재귀 메소드 실행되는 사이에 존재해야 됩니다.

   

   

   

소스코드

   

public class ResursiveEx02 {

 

public static void main(String[] args) {

 

showJava(3);

}

 

/*잘못된 재귀 메소드 정의*/

/* public static void showJava(int cnt)

{

System.out.println("JAVA ");

 

//재귀메소드 호출

showJava(cnt--); //Exception in thread "main" java.lang.StackOverflowError

 

//종료조건

if(cnt==1)

return;

}*/

 

 

/*

해결방법

1) 증감을 post증가에서 pre증가로 변경

2) 종료 조건 위치 변경 : 종료조건은 메소드의 실행과 재귀 메소드 실행되는 사이에 존재해야 합니다.

*/

 

 

 

/*수정환 재귀 메소드 정의*/

public static void showJava(int cnt)

{

System.out.println("JAVA ");

 

//종료조건

if(cnt==1)

return;

 

//post증가로 면경 위치변경

showJava(--cnt);

}

 

}


   

   

출력 결과

잘못된 재귀 메소드 정의

   

   

수정환 재귀 메소드 정의