如M=6, N=3则这样调用 var ResL: TStrings; begin ResL := TStringList.create; ResL.clear; GenCMN(ResL, 6, 3); //ResL中存的就是要打印的结果 ..... end; procedure GenCMN(ResList: TStrings; M, N: integer; const pre: string = ''); var i: integer; s: string;begin for i := M downto n do begin if pre = '' then s := format('%d', [i]) else s := Format('%s, %d', [pre, i]); if n = 1 then ResList.Add(s) else GenCMN(ResList, i-1, n-1, s); end;end;
var
ResL: TStrings;
begin
ResL := TStringList.create;
ResL.clear;
GenCMN(ResL, 6, 3);
//ResL中存的就是要打印的结果
.....
end;
procedure GenCMN(ResList: TStrings; M, N: integer; const pre: string = '');
var
i: integer;
s: string;begin
for i := M downto n do
begin
if pre = '' then
s := format('%d', [i])
else
s := Format('%s, %d', [pre, i]); if n = 1 then
ResList.Add(s)
else
GenCMN(ResList, i-1, n-1, s);
end;end;