Fatorial em idiomas da família C

Eu tenho tentado fazer uma função fatorial em C ++, e acabei de descobrir que as entradas que são maiores que 10 não são calculadas corretamente. Eu tentei C # mas enfrentei o mesmo problema.

usando esta função recursiva:

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

O programa retorna 0 para números grandes, e mesmo pequenas entradas como 15 ou 16 são erroneamente calculadas, quero dizer que o resultado difere do que eu recebo na calculadora do Windows.

questionAnswers(4)

yourAnswerToTheQuestion