永发信息网

这个用递归法解决报数问题的pascal程序哪错了?

答案:5  悬赏:20  手机版
解决时间 2021-05-01 16:29
program houzi;  type arr=array[1..100] of integer;  var    a:arr;    n,i,k: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;



  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.编译时不成功。
最佳答案

主程序没有设定  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.


全部回答

肯定是递归推出条件有问题

约瑟夫问题??VAR i,k,m,s:longint; f:boolean; function c(r:integer):boolean; var re:integer; begin re:=(s+m-1)mod r; if (re>=k) then begin s:=re; c:=true; end else c:=false; end; begin read(k); m:=k; while not f do begin f:=true;s:=0; for i:=0 to k-1 do if (not c(2*k-i))then begin f:=false; break; end; inc(m); end; writeln(m-1); end.上面这个是程序 下面的是 我给你修改的程序 可以编译 但没测试 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.

主程序中的变量类型(arr)不能在过程中直接调用

你一天就光会干这事!
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
各位同志我帅吗
彩虹岛小草挂机设置界面打不开
暗疮有什么方法可以医治?吃什么好?
求 校园广播剧 剧本网站~~
收缩压正常舒张压高是什么原因?
蓝屏代码是0x000000d1(0x0000002c,
深圳哪里可以学做烧烤
说出SJ同公司的师兄弟姐妹(请列出3个)
牡丹江市第二人民医院-肾内科门诊这个地址在
读后感,去完东莞隐贤山庄快活谷后写的后感 70
为什么我这无驱视频显示黑屏?? 帮帮忙!!
杰伦2010杭州站演唱会门票的价位
合天空套,要准备多少人民币啊
我的QQ会员怎么限额消费了1QB了,
电脑没有声音,我不会搞,下载了万能声音驱动
推荐资讯
11号 无锡到苏州的动车是几点?
怎样刷、晒白色鞋才不会发黄?
2010.8.12流星雨烟台能看到吗
影流之镰的登场台词,LOL 影流之主-劫 的台词
现在学开挖机怎么样
武广专线在在湖北有几个站?
胡言乱言、思维紊乱,是精神病的那种病?
福州哪里有轩谛专柜
求艺声的爱情真痛苦的歌词
红橙黄绿青蓝紫七种颜料相加是什么颜色?
求大量QQ个性签名
帮忙用英语造句~~~
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?