E
e518
Unregistered / Unconfirmed
GUEST, unregistred user!
以下程序是从网上搜到的,说是找出n个自然数(1,2,3,…,n)中r个数的组合的经典算法,但运行后,得出的结果怪异,不知错在何处。
var
k,n,r:integer;
procedure comb(n,r:integer);
var
i,temp:integer;
begin
for i:=ndo
wnto rdo
begin
write(i:3);
if i>1 then
comb(i-1,r-1) {递推到下一情形}
else
writeln;
end;
end;
begin
{main}
write('n,r=');readln(n,r);
if r>n then
begin
writeln('Input n,r error!');
halt;
end;
comb(n,r);
{调用递归过程}
readln;
//暂停
end.
var
k,n,r:integer;
procedure comb(n,r:integer);
var
i,temp:integer;
begin
for i:=ndo
wnto rdo
begin
write(i:3);
if i>1 then
comb(i-1,r-1) {递推到下一情形}
else
writeln;
end;
end;
begin
{main}
write('n,r=');readln(n,r);
if r>n then
begin
writeln('Input n,r error!');
halt;
end;
comb(n,r);
{调用递归过程}
readln;
//暂停
end.