Using full function prototypes is actually a proper way to declare functions. For C language using a function prototype is optional. It also avoids any redundant type conversions between the arguments and the type definition of parameters. It is also helpful in finding bugs in the program before hand.
Syntax of function prototype:
type function_name(type parmeter_name1, type parmeter_name2,…,type parmeter_nameN);
void factorial(int *a);