재귀란 원래의 자리로 되돌아가거나 되돌아오는 것이다.
public int arrSum(int[] arr) {
//Base Case : 문제를 더 이상 쪼갤 수 없는 경우 (재귀의 기초)
if (arr의 길이가 0인 경우) {
return 0;
}
/*
* Recursive Case : 그렇지 않은 경우
* 문제를 더 이상 쪼갤 수 없는 경우
* head: 배열의 첫 요소
* tail: 배열의 첫 요소만 제거된 배열
*/
return head + arrSum(tail);
}
// 반복문으로 구현한 구구단 메서드
public void Gugudan(int level) {
for(int count = 1; count < 10; count++) {
System.out.printf("%d x %d = %d\n", level, count, level * count);
}
}
// 재귀 호출로 구현한 구구단 메서드
public void Gugudan(int level, int count) {
if(count > 9) {
return;
}
System.out.printf("%d x %d = %d\n", level, count, level*count);
Gugudan(level, ++count);
}
// 반복문으로 구현한 팩토리얼 메서드
public int Factorial(int number) {
int result = 1;
for(int count = number; count > 0; count--) {
result = result * count;
}
return result;
}
// 재귀 호출로 구현한 팩토리얼 메서드
public int Factorial(int number) {
if(number <= 1) {
return 1;
}
return number * Factorial(number - 1);
}