Вычисление факториала на языке C
Задача. Вводится натуральное число. Найти его факториал.
Факториал числа - это произведение всех натуральных чисел до него включительно. Например, факториал числа 5 равен произведению 1 * 2 * 3 * 4 * 5 = 120.
Используя цикл while
, можно на каждой итерации уменьшать значение n (вначале содержит натуральное число, для которого ищется факториал). При этом до уменьшения умножать на него общее произведение. Другими словами, сначала мы умножаем на самый большой множитель, в конце на 2. Если бы мы шли от меньшего к большему множителю, то пришлось бы вводить дополнительную переменную.
#include <stdio.h> int main() { unsigned char n; unsigned long factorial = 1; scanf("%hhu", &n); printf("%hhu! = ", n); while (n > 1) factorial *= n--; printf("%lu\n", factorial); }
Вместо while
можно использовать цикл for
:
for (; n > 1; n--) factorial *= n;
Примеры выполнения:
5 5! = 120
6 6! = 720
8 8! = 40320
Обратите внимание, что факториал сильно возрастает даже при небольшом увеличении значения n. Поскольку тип данных имеет ограничения (максимально допустимое значение), факториал больших натуральных чисел будет вычисляться неправильно.