факториальный расчет в C - PullRequest
0 голосов
/ 16 июня 2020

Я хотел написать простую программу для вычисления факториала данного числа, используя C. Тем не менее, в моем коде есть логическая ошибка, которую я не могу обнаружить. Буду рад помощи.

int fact(int n);
int main(void)
{
    int num = get_int("Type number: ");
    printf("%i\n", fact(num));
}

//define function

int fact(int n)
{

    for (int i = 1; i < n; i++)
    {
        n *= i;
    }
    return n;
}

Ответы [ 2 ]

1 голос
/ 16 июня 2020

Вы не можете использовать n для расчета.

Вы должны сохранить сумму с другой переменной

int fact(int n)
{
    int product = 1;
    for (int i = 1; i <= n; i++)
    {
        product = product  * i;
    }
    return product;
}
0 голосов
/ 16 июня 2020

В математике факториал положительного целого числа N, обозначаемого N!, является произведением всех положительных integers, меньших или равных N:

N!=N*(N-1)*(N-2)*(N-3)*.......*1
     +-------------------------+
     notice that this is: (N-1)!  <==>  So, N! = N*(N-1)!

мы Эти математические факты можно использовать для реализации факториальной функции в двух различных формах, подходах recursive и iterative:

рекурсивный подход

size_t rec_factorial(size_t n)
{
    /*Base case or stopping condition*/
    if(n==0)
    {
        /* 0! = 1 */
        return 1;
    }
    /*n! = n * (n-1)!*/
    return n * rec_factorial(n-1);
}

итерационный подход

size_t factorial(size_t n)
{
  size_t j = 1;
  size_t result = 1;
  while(j <= n){
    result *= j; /* n!=n*(n-1)*(n-2)*(n-3)*....1 */
    ++j;
  }
  return result;
}
...