这个用递归法解决报数问题的pascal程序哪错了?
- 提问者网友:却不属于对方
- 2021-04-30 16:52
procedure guocheng(var a:arr;var ji:integer);
var s:integer; begin if ji >=3 then begin k:=1;s:=0; case k of 1:begin for i:=1 to ji do s:=s+1; k:=0; if s=3 then begin ji:=ji-1; a[i]:=0; s:=0; end; end;
0:begin for i:=ji downto 1 do s:=s+1; k:=1; if s=3 then begin ji:=ji-1; a[i]:=0; s:=0; end; guocheng(a,n); end; end; end;
begin writeln('shumu'); readln(n); for i:=1 to n do a[i]:=1; guocheng(a,n);
if k=1 then begin i:=1; while a[i]=0 do i:=i+1; ji:=i; end else begin i:=n; while a[i]=0 do i:=i-1; ji:=i;
writeln('jieguoshi','a','[',ji,']'); end.编译时不成功。
- 五星知识达人网友:纵马山川剑自提
- 2021-04-30 17:47
主程序没有设定 ji 的类型。
case语句没有结束,在过程最后一个 end; 之前再加一个end;
倒数第七行的:
else
begin
i:=n;
while a[i]=0 do i:=i-1;
ji:=i;
{这里没有 end; }。
writeln('jieguoshi','a','[',ji,']');
end.
(以下这个不是编译错误,倒数第二行)
writeln('jieguoshi','a','[',ji,']'); ,
我自作主张的改成了 writeln('jieguoshi a[',ji,']'); 。
那么以下: (编译通过,符不符合题意呢,就不知道了。)
program houzi;
type arr=array[1..100] of integer;
var
a:arr;
n,i,k,ji:integer;
procedure guocheng(var a:arr;var ji:integer);
var
s:integer;
begin
if ji >=3 then
begin
k:=1;
s:=0;
case k of
1:begin
for i:=1 to ji do
s:=s+1;
k:=0;
if s=3 then
begin
ji:=ji-1;
a[i]:=0;
s:=0;
end;
end;
0:begin
for i:=ji downto 1 do
s:=s+1;
k:=1;
if s=3 then
begin
ji:=ji-1;
a[i]:=0;
s:=0;
end;
guocheng(a,n);
end;
end;
end;
end;
begin
writeln('shumu');
readln(n);
for i:=1 to n do
a[i]:=1;
guocheng(a,n);
if k=1 then
begin
i:=1;
while a[i]=0 do i:=i+1;
ji:=i;
end
else
begin
i:=n;
while a[i]=0 do i:=i-1;
ji:=i;
end;
writeln('jieguoshi a[',ji,']');
end.
- 1楼网友:千杯敬自由
- 2021-04-30 21:40
肯定是递归推出条件有问题
- 2楼网友:有你哪都是故乡
- 2021-04-30 20:14
- 3楼网友:不如潦草
- 2021-04-30 20:00
主程序中的变量类型(arr)不能在过程中直接调用
- 4楼网友:时间的尘埃
- 2021-04-30 18:34