Внутри функции
void
FirstFactorial(int num)
{
// code goes here
while(num > 0)
{
result = result * num;
num--;
FirstFactorial(num);
}
printf("%d", result);
}
каждая ее итерация вызывает себя num
раза, и все итерации вместе выводят результат глобальной переменной.
Так, например, при первом вызове функции функция вызывает себя в while l oop для диапазона значений [num, 1].
Удалите while l oop и не используйте глобальную переменную.
Вот демонстрационная программа.
#include <stdio.h>
unsigned long long int factorial( unsigned long long int n )
{
return n < 2 ? 1 : n * factorial( n - 1 );
}
int main(void)
{
printf( "%llu! = %llu\n", 4llu, factorial( 4 ) );
printf( "%llu! = %llu\n", 20llu, factorial( 20 ) );
return 0;
}
Вывод программы:
4! = 24
20! = 2432902008176640000
Обратите внимание, что максимальное значение, которое вы можете указать, составляет 20.