initial commit
factorial use sub function