Selain dengan menggunakan perulangan for, kita juga bisa menghitung faktorial dengan perulangan while do seperti contoh berikut:
program HitungFaktorial3;
{$APPTYPE CONSOLE}
var
n,i,faktorial:cardinal;
begin
Write('Masukkan sebuah bilangan: ');
Readln(n);
faktorial:=1;
if (n<>0) then
begin
i:=1;
while (i<=n) do
begin
faktorial:=faktorial*i;
i:=i+1;
end;
end;
Write('Faktorial dari ',n);
Writeln(' adalah ',faktorial);
Writeln('Tekan Enter');
Readln;
end.Sebelum masuk kedalam perulangan, kita tentukan nilai i terlebih dahulu. Di dalam perulangan, nilai i kita modifikasi dengan cara menambahnya dengan 1.
Berbeda dengan perulangan menggunakan for yang perubahan variabelnya selalu selisih 1, maka perubahan variabel pada perulangan dengan while do tidak selalu selisih 1.

