Okay but if you are going to call the function factorial, why not have it actually calculate a factorial? This would have done the job:
def factorial(N, result=1):
if N == 1:
return result
return factorial(N-1, N*result)
Assuming that you never call it with the result argument.
As written, it just looks like the author never ran the code.