메서드의 내부에서 메서드 자신을 다시 호출하는 것이다.
오직 재귀호출 뿐이면 무한로프에 빠지기 때문에 조건문이 항상 같이 사용되어야 한다
(1) 4! 구하는 예제
public class recursive {
public static void main(String[] args) {
int result = factorial(4);
System.out.println(result);
}
static int factorial(int n){ // 재귀함수
int result = 0;
if(n == 1)
return 1; // 메소드 종료
else
result = n*factorial(n-1); // 자기 자신 메소드 호출
return result;
}
}
(2) x의 제곱을 구하는 예제
public class recursive3 {
public static void main(String[] args) {
int x = 2;
int n = 5; // 제곱근 5승까지 구함
long result = 0;
for(int i =1; i<=n; i++){
result += power(x,i);
}
System.out.println(result);
}
static long power(int x, int n){
if(n==1) // 2의 1승일때 2 출력
return x;
return x*power(x,n-1); // (2*2)+(2*2*2)+(2*2*2*2)+(2*2*2*2*2)
}
}