Uses a function to compute the factorial. Being cutious with mixing signed/unsigned ints