Factorial should handle 0 case