Когда я выполняю эту программу, я получаю segfault и не знаю почему. Она должна возвращать факториал (?) На входе, пока оно больше 0.Почему возникает ошибка сегментации при выполнении этой программы?
#include <stdio.h>
int factorial(int input)
{
if (input > 0)
{
return input * factorial(input--);
}
else
{
return 1;
}
}
int main()
{
printf("%d", factorial(23));
return 0;
}
'x * somefunc (x -)' провоцирует UB в любом случае. – alk
Еще одна проблема, с которой вы столкнетесь, заключается в том, что ваша программа только вычисляет факториальную функцию, пока результат вписывается в 'int' и в противном случае переполняется. –
Один символ 'printf' внутри функции должен был показать проблему. – usr2564301