Другие объяснили, что вам следует избегать смешивания входных и выходных переменных. Это хороший совет, и как новичок вы должны постараться его соблюдать.
Но это особый случай, и здесь вы можете повторно использовать входное значение при условии, что вы используете уменьшающуюся l oop:
int factorial(int x)
{
int i;
for (i = x-1; i >1; i--)
x *= i;
return x;
}
Это работает, потому что неявно инициализирует возвращаемое значение с x
, а затем умножает его на все числа под ним, что является возможным определением для факториала.