added recursive factorial solution