factorial with do while