페이지

2015. 1. 8.

[JAVA] Day4.재귀호출(recursive call)

3.8 재귀호출(recursive call)

재귀호출이란?

 - 메서드 내에서 자기자신을 반복적으로 호출하는 것
 - 재귀호출은 반복문으로 바꿀 수 있으며 반복문보다 성능이 나쁨.
 - 이해하기 쉽고 간결한 코드를 작성할 수 있다.



재귀호출의 예

 - 팩토리얼, 제곱, 트리운행, 폴더목록표시 등등...



class FactorialTest
{
public static void main(String[] args)
{
System.out.println("factorial(4) = "+factorial(4));
}
static long factorial(int n)
{
long result = 0;
if (n==1)
result = 1;
else
{
System.out.println("factorial("+(n-1)+") 호출");
result = n * factorial(n-1);
}
return result;
}
}
//분석 : fac(4)호출 >> 4 * fac(3) >> fac(3)호출 >> 4*3*fac(2) >> fac(2)호출
//   >> 4*3*2*fac(1) >> fac(1)호출 >> 4*3*2*(fac(1)=1) = 이제 스택에서 복귀
// 24 출력

//재귀는 짜기는 쉽지만 동작이 느리다 ㅜㅜ