К рекурсии относусь негативно. Это во первых потенциальное место краша программы из-за переполнения стека. Во -вторых тот же код в цикле выглядит понятней, и вот таких вопрос не возникает.
int n = 10;
int factorial = 1;
for (int i = 1; i <= n; i++)
factorial = factorial * i;
Да оно даже короче.