원소가 섞여 있다면 재귀 메서드를 사용하여 점화식에 따라 부분 문제를 해결해야 합니다. 점화식에서는 4개의 작은 정사각형 결과 합을 구해야 하므로, 이를 간단하게 구현하고자 Count 클래스에 두 Count 객체를 합하는 add() 메서드를 정의하겠습니다.
private static class Count {
public final int zero;
public final int one;
public Count(int zero, int one) {
this.zero = zero;
this.one = one;
}
public Count add(Count other) {
return new Count(zero + other.zero, one + other.one);
}
}
이제 add() 메서드와 점화식을 이용하여 다음과 같이 재귀 호출을 한 후 모든 결과를 합해서 반환합니다. add() 메서드에서 새로운 Count 객체를 반환하도록 구현했기 때문에 재귀 호출로 얻게 된 Count 객체들을 간편하게 합칠 수 있습니다.