It should be noted that when defining fac, internal I is its internal parameter (local variable), and its scope of action is limited to the inside of fac. Now in main (), we give fac () an integer named I, and it will only give its value to N in fac to participate in the operation of fac.
In fact, n is only a formal parameter, and its scope of action is limited to fac. But since it is placed in fac(int n), it is given a task to pass the parameters given to fac () in main () to fac (), thus completing the call to fac ().