下面的程序如何转非递归?
给n个数,要求取任意几个数相加得m
var m,n,m2,i,n2:integer;
a:array[1..10]of integer;
b:array[1..10]of boolean;
procedure next(m2,k:integer);
begin
if k>n then
begin
if m2=m then
begin
inc(n2);
for i:=1 to n do
if b then write(a,' ');
writeln;
end;
end
else
begin
next(m2,k+1);
b[k]:=true;
next(m2+a[k],k+1);
b[k]:=false;
end;
end;
begin
readln(m,n);
for i:=1 to n do
begin
read(a);
b:=false;
end;
n2:=0;
next(0,1);
writeln('zu shu:',n2);
end.