これだと i == 66 まで行ける

long long combi(long long n, long long k)
{
long long answer, i, j;

if (n < 30) {
answer = 1;
for (i = n, j = 1; i >= n - k + 1; i--, j++) {
answer *= i;
answer /= j;
}
return answer;
} else if (n % 2) {
return combi(n - 1, (n - 1) / 2) / (n / 2 + 1) * n;
} else {
return combi(n - 1, (n - 1) / 2) * 2;
}
}

int main(void)
{
int i;

for (i = 1; i < 100; i++) {
printf("%d: %lld\n", i, combi(static_cast<long long>(i), static_cast<long long>(i / 2)));
}
return 0;
}