long FactDouble(int n)
{
if (n < 0) return -1;
if (n == 0 || n == 1) return 1;
long result = 1;
int step = 2;
int start = (n % 2 == 0) ? 2 : 1;
for (int i = start; i <= n; i += step)
{
result *= i;
}
return result;
}
|