Warum laesst Du die 1 immer fest ? Deine Rechnung ware also
eher 3!=3*2*1=6, da du nur die letzten drei Stellen veränderst.
Ein Programm um alle Permutationen in lexikographischer Reihenfolge auszugeben, findet sich im Informatik-Duden.
MFG
Martin
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Das folgende Turbopascal-Programm erzeugt alle Permutationen von N Zahlen:
program Alle_Permutationen;
uses crt;
var n:integer;
el:array[1…255] of integer;
procedure tausch(var x,y:integer);
var z:integer;
BEGIN
z:=x;x:=y;y:=z;
end;
procedure perm(k:integer);
var i: integer;
begin
if k=1 then for i:=1 to n do write(el[i])
else
begin
perm(k-1);
for i:=1 to k-1 do
BEGIN
tausch(el[i],el[k]);
perm(k-1);
tausch(el[i],el[k]);
END;
END;
END;
BEGIN
readln(n);
for k:=1 to n do el[k]:=k;
perm(n);
END.