인자도 int 3개만 쓰고 내부에서 변수 정의도 2개밖에 안했는데 재귀 10^6번 들어간 거랑 거의 안들어간거랑 메모리 차이가 60MB차이가 나네


그럼 함수 1개당 60바이트씩 먹는 거니까 연산 중에 상수 생기는거 제외해도 함수 한번 호출할 때마다 30바이트는 쓴다는 건가..?


 혹시나 해서 코드도 적어놓음

int f(int h, int r1, int r2) { if(h == m) return 0; short k = 8 * (r1 > 4 ? r1 - 3 : r1) + r2; if(dp[h][k] != -1) return dp[h][k] + (r1 > 4); int ans = 0; ans = max(ans, r1 / 3 + f(h + 1, r2, cnt[h + 2])); if(r1 >= 1 && r2 >= 1 && cnt[h + 2] >= 1) ans = max(ans, 1 + (r1 - 1) / 3 + f(h + 1, r2 - 1, cnt[h + 2] - 1)); if(r1 >= 2 && r2 >= 2 && cnt[h + 2] >= 2) ans = max(ans, 2 + (r1 - 2) / 3 + f(h + 1, r2 - 2, cnt[h + 2] - 2)); dp[h][k] = ans - (r1 > 4); return ans; }