Factorial en lenguajes de la familia C

He estado tratando de hacer una función factorial en C ++, y acabo de encontrar que las entradas que son mayores que 10 no se calculan correctamente. Intenté C # pero me enfrenté al mismo problema.

utilizando esta función recursiva:

   int Factorial(int Number) {
        if (Number == 0) return 1;
        return Number * Factorial(Number - 1);
    }

El programa devuelve 0 para números grandes, e incluso pequeñas entradas como 15 o 16 se calculan incorrectamente, quiero decir que el resultado difiere de lo que obtengo en la calculadora de Windows.

Respuestas a la pregunta(4)

Su respuesta a la pregunta