Вы не можете объявить определение функции внутри main()
или любой другой функции ... определения функций должны быть автономными и не иметь встроенных определений функций внутри них.
Также я не уверен, что вы делаете в строке, которую вы пометили как ошибку, поскольку f()
не является определенной функцией, поэтому вы не можете ее вызвать. Кроме того, необходимо будет вернуть некоторый тип l-значения, такой как указатель на статическую переменную, объявленную внутри функции, или указатель, переданный по ссылке на функцию, и даже в этом случае синтаксис неправильный, так как необходим требуемый разыменование ... так что в принципе вы не можете делать то, что делаете на этой линии.
Чтобы получить что-то, что компилируется, попробуйте
#include <stdio.h>
int factorial (int n)
{
if (n <= 0)
{
return 1;
}
else
{
return n * factorial (n-1);
}
}
int main (void)
{
int x;
x = factorial(5);
printf("Factorial of 5 is equal to %d", x);
return 0;
}