function ZsList(mStr: string): string; { 全排列 } procedure pZsList(mLeft, mRight: string);
var
I, L: Integer;
Temp: string;
begin
L := Length(mLeft);
if L = 0 then
Result := Result + mRight + #13#10
else for I := 1 to L do begin
Temp := mLeft;
Delete(Temp, I, 1);
pZsList(Temp, Concat(mRight, mLeft[I]));
end;
end; { [ZsList<pZsList>] }begin
Result := '';
pZsList(mStr, '');
end; { ZsList }procedure TForm1.Button1Click(Sender: TObject);
begin
Memo1.Text := ZsList('abcd')
end;
var
I, L: Integer;
Temp: string;
begin
L := Length(mLeft);
if L = 0 then
Result := Result + mRight + #13#10
else for I := 1 to L do begin
Temp := mLeft;
Delete(Temp, I, 1);
pZsList(Temp, Concat(mRight, mLeft[I]));
end;
end; { [ZsList<pZsList>] }begin
Result := '';
pZsList(mStr, '');
end; { ZsList }procedure TForm1.Button1Click(Sender: TObject);
begin
Memo1.Text := ZsList('abcd')
end;
pZsList(Temp, Concat(mRight, mLeft[I]));递归?