
재귀함수란 마치 영화 인셉션에서 꿈속의 꿈속에 들어갔다가, 순서대로 꿈속의 꿈부터 깨어나면서 나오는것과 같다.
재귀함수는 끊임없이 계속해서 본인의 함수를 호출하기 때문에 우리가 함수를 멈추게 장치를 만들어주어야한다.
process stack에 저장하게 된다. 그래서 반복문에 비해서 메모리를 더 많이 사용한다.내가 생각할때 재귀는 흐름을 이해하는것이 포인트같다.
그림을 그려서 작은단위로 쪼개면서 그쪼갠값을 또 쪼개서 더이상 쪼갤수 없다면 마지막으로 쪼갠값을 쪼개기 전값에 대입시키면서 계산을 하고, 마지막으로 계산한 값이 우리가 원하는 값이 되도록 로직을 짜는 것이 중요하다.
성능상 반복문이 더 좋지만, 특정 상황에서는 재귀가 더 유리하다.
int []a 의 모든 배열의 합
import java.util.Arrays;
class tryja {
static int SumArr(int[] a) {
if (a.length == 0)
return 0;
int head = a[0];
int[] tail = Arrays.copyOfRange(a, 1, a.length);
return head + SumArr(tail);
}
public static void main(String[] args) {
int[] a = {1, 2, 3, 4, 5};
System.out.println(SumArr(a));
}
}