肯定用循环最容易做啊,效率应该也是满高的,每次循环最多就是 33*32*31*30*29*28 次,再配合条件,减少一些无用功,
var i,j,k,l,m,n:integer;
e:integer;
begin
e:=xxxx;
for i:=1 to 28do
begin
if i>=e then
break;
for j:=i to 29do
begin
if i+j>=e then
break;
for k:=j to 30do
begin
if i+j+k>=e then
break;
for l:=k to 31do
begin
if i+j+k+l>=e then
break;
for m:=l to 32do
begin
if i+j+k+l+m>=e then
break;
for n:=m to 33do
begin
if i+j+k+l+m+n>e then
break;
if i+j+k+l+m+n=e then
begin
//显示i j k l m n
end;
end;
end;
end;
end;
end;
end;
end;