pascal 中的 exit 的文题 求教!

programhuanghou;varl:array[1..10]ofinteger;n:integer;p,q:array[1..20]ofinteger;x,y:ar... program huanghou;
var
l:array[1..10] of integer;
n:integer;
p,q:array[1..20] of integer;
x,y:array[1..10] of integer;
procedure search(cnt:integer);
var
i,j:integer;
begin
if cnt>n then begin
writeln('answer:');
for i:=1 to n do writeln(x[i],',',y[i]);
exit;
end;
i:=cnt;
for j:=1 to n do begin
if (l[j]=0) and (p[i+j-1]=0) and (q[i-j+n]=0) then begin
l[j]:=1; p[i+j-1]:=1; q[i-j+n]:=1;
x[cnt]:=i; y[cnt]:=j;
search(cnt+1);
l[j]:=0; p[i+j-1]:=0; q[i-j+n]:=0;
end;
end;
end;
begin
read(n);
fillchar(l,sizeof(l),0);
fillchar(p,sizeof(p),0);
fillchar(q,sizeof(q),0);
search(1);
end.

这个八皇后的问题 ,呵呵 我主要想问一下 我自己编译的时候 是把所有情况都打印了出来,比如 n=4时 有两种方案, 但exit 不是直接退出过程吗?
展开
 我来答
wtswu95
2012-02-15 · 超过20用户采纳过TA的回答
知道答主
回答量:49
采纳率:0%
帮助的人:39.6万
展开全部
这个。。我也遇到过这种情况,有时候exit只会退出1层,有时就全部退出去了。
procedure search(cnt:integer);
var
i,j:integer;
begin
if cnt>n then begin
writeln('answer:');
for i:=1 to n do writeln(x[i],',',y[i]);
end else begin
i:=cnt;
for j:=1 to n do begin
if (l[j]=0) and (p[i+j-1]=0) and (q[i-j+n]=0) then begin
l[j]:=1; p[i+j-1]:=1; q[i-j+n]:=1;
x[cnt]:=i; y[cnt]:=j;
search(cnt+1);
l[j]:=0; p[i+j-1]:=0; q[i-j+n]:=0;
end;
end;
end;
end;
可以把search过程改成这样。
不用exit应该不会出现问题了吧
富港检测技术(东莞)有限公司_
2024-05-27 广告
ISTA3E程序是对相同产品的集合包装的综合模拟性能测试,集合包装件被定义为将一个产品、多个产品或包装件放置在滑板或托盘上,固定在一起或是作为一个单元运输。例如:一台机器由带瓦楞底托的托盘上、瓦楞侧围、顶盖包装,用缠绕膜缠绕在托盘上。用于评... 点击进入详情页
本回答由富港检测技术(东莞)有限公司_提供
871629510
2012-02-16 · TA获得超过391个赞
知道小有建树答主
回答量:220
采纳率:100%
帮助的人:90.8万
展开全部
在函数或者是过程中用exit,只会退出这个过程或函数,不是退出整个程序,多用几次是不行的,看看用label行不?
追问
label 是怎么用的哦?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友5da619f
2012-02-14 · TA获得超过279个赞
知道小有建树答主
回答量:439
采纳率:0%
帮助的人:259万
展开全部
不是,是退出一层递归调用。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式