while文の方は
nが評価された後nを-1してそれから
ans*=nを行っているんじゃないの