사전적 용어로는 '원래 자리로 되돌아가거나 되돌아옴'이라는 뜻이다.
그렇다면 재귀함수는 사전의 뜻과 비슷하게 함수를 선언할 때 선언한 함수를 그 함수 안에서 계속 호출해주는 메서드라고 할 수 있다.
public void recursion() {
System.out.println("Hello");
System.out.println("World");
recursion();
}
위와 같이 호출하게 되면 출력값이 무한히 반복되는 것을 볼 수 있을 것이다.
아래 예제는 재귀함수를 사용한 예제 들이다.
N까지의 합
class SumFunction {
public static void main(String[] args) {
int N = 5;
System.out.println("1부터 N까지 의 합 : " + Sum(N));
}
public static int Sum(int num) {
if (num == 1) {
return 1;
}
return num + Sum(num - 1);
}
}
// 출력
15
구구단
class GugudanFunction {
public static void main(String[] args) {
Gugudan(2, 1);
}
public static void Gugudan(int level, int count) {
if (count > 9) return;
System.out.printf("%d x %d = %d", level, count, level * count);
Gugudan(level, ++count);
}
}
// 출력
2 x 1 = 2
2 x 2 = 4
2 x 3 = 6
2 x 4 = 8
2 x 5 = 10
2 x 6 = 12
2 x 7 = 14
2 x 8 = 16
2 x 9 = 18
피보나치 수열
class FibonacciFunction {
public static void main(String[] args) {
int N = 5;
System.out.println(Fibonacci(N));
}
public static int Fibonacci(int num) {
if (num <= 1) {
return num;
}
return Fibonacci(num - 1) + Fibonacci(num -2);
}
}
// 출력
5