Это потому, что вы делаете целочисленное деление - результатом деления одного целого на другое является целое число - поскольку i / Factorial(i)
меньше 1 (для i> 2), результат усекается до 0. Вы можете это исправить путем преобразования числителя и делителя в двойные числа:
double c = (double)i / (double)fact(i);
РЕДАКТИРОВАТЬ: для i = 1 у вас есть 1/1, который равен 1 для целочисленного деления, и усечение не происходит. То же самое происходит для i = 2: (2 / Fact (2)) 2/2 = 1.