Функция вычисления факториала выводит неправильные значения - C (СИ)
Формулировка задачи:
Ошибки компилятор не выдает.
А вот текст программы:
Cам писал, хочу понять в чем моя ошибка.
Если ответите, буду очень рад!
#include "stdafx.h"
#include "conio.h"
int factorial(int x)
{
for (int i = 1; i < x; i++)
x = x*i;
return x;
}
int _tmain(int argc, _TCHAR* argv[])
{
int a;
printf("vvedite chislo\n");
scanf_s("%d",&a);
printf("factorialchik=%d", factorial(a) * 1);
_getch();
return 0;
}Решение задачи: «Функция вычисления факториала выводит неправильные значения»
textual
Листинг программы
int factorial(int x)
{
for (int i = x-1; i>=2; i--)
x = x*i;
return x;
}
Объяснение кода листинга программы
- Передаем в функцию
factorialзначениеx - Инициализируем переменную
iзначениемx-1 - Запускаем цикл
for, который выполняется, пока значениеiбольше или равно 2 - Внутри цикла умножаем значение
xна значениеiи присваиваем результат переменнойx - После окончания цикла возвращаем значение переменной
x - Если значение
xменьше или равно 2, то факториал равен 1 - Если значение
xбольше 2, то вычисляем факториал путем последовательного умножения всех целых чисел отx-1до 2 - Возвращаем полученное значение факториала