递归练习(1)答案_第1页
递归练习(1)答案_第2页
递归练习(1)答案_第3页
递归练习(1)答案_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精选优质文档-倾情为你奉上1、 function f(n:integer):integer;beginif n=0 then f:=1 else if n<0 then f:=f(n+1)+3else f:=f(n-1)-2;end;则f(1)与f(2)的值分别是多少? -1 -32、program ll(input,output);var a,b,c,d:integer;procedure p(a:integer;var b:integer);var c:integer;begina:=a+1;b:=b+1;c:=2;d:=d+1;writeln(m,a,b,c,d);if a<

2、3 then p(a,b);writeln (n,a,b,c,d)end; x1243begin m2324a:=1;b:=2;c:=4;d:=3; m3425writeln(x,a,b,c,d); n3425p(a,b); n2425writeln(y,a,b,c,d) y1445end.3、以下程序将输入的10个数按升序排列后,删除其中值相同的元素,使之只保留一个。请从下面对应的一组选择项中选出正确的内容填入空格中。Program main(input,output);Type Arr=array 1.10 of integer;Var a:arr; i,n:integer;Procedu

3、re sort(var x:arr;n:integer);Var i,j,p,t:integer;Begin For i:=1 to n-1 do Begin P:=i; For j:=(i+1 to n )doIf (xp>xj) then p:=j; (if p<>I then begin t:=xp;xp:=xi;xi:=t;end;) end;end;procedure purge(var a:arr;var n:integer);var i,j:integer;beign i:=n; While i>1 do If ai=ai-1 thenBegin For

4、j:=i to n do ( aj-1:=aj; ) N:=n-1; (i:=i-1;)endelse i:=i-1; end;begin for i:=1 to 10 do read(ai); readln; n:=10; sort(a,n); purge(a,n); for i:=1 to n do write(ai:3); writelnend.4、下列程序输入字符串的长度(不为)和字符串,打印该字符串的所有排列。例如,输入长度为和ABC时,分别打印出ABC ACB BAC BCA CAB CBA。当输入的字符串的长度大于10时,取前10个字符。其中permute为递归过程。Progra

5、m strram (input,output);Var i,length:integer; Letter,newword:array 1.10 of char; Used:array 1.10 of Boolean;Procedure permute(countdown:integer);Var j:integer;Begin If countdown=( 0 ) then Begin For j:=(length) downto (1) do write (newword j);WritelnEndElse For j:=1 to ( length ) do If not usedj the

6、n Begin Usedj:=true; Newwordcountdown :=letterj;( permute(countdown-1) );( usedj ):=false end;end;begin readln(length);if ( length>10) then length:=10;for i:=1 to length do begin usedi:=false;read(letteri)end;permute(length)end. 5、program ii(input,output);const u:array1.4 of integer=(0,5,3,1);v:a

7、rray1.4 of integer=(0,7,6,5);var a,b,c,d,e,f,x,y,z:integer;beginread(a,b,c,d,e,f);z:=f+e+d+(c+3)div 4;y:=5*d+uc mod 4;if (b>y) then beginz:=z+(b-y+8) div 9;x:=(b-y+8) div 9*9-(b-y)*4+11*e +vc mod 4;endelse x:=(y-b)*4+11*e+vc mod 4;if (a>x) then z:=z+(a-x+35) div 36;writeln(z)end.输入:4 7 9 20 56

8、 47输出: 1266、求m与n的最大公约数var m,n,gcd:integer;function gys(a,b:integer):integer;var r:integer;begin r:=_a mod b_; if r=0 then _gys:=b_ else _gys(b,r)_end;begin readln(m,n); _gcd:=gys(m,n);_; writeln('gcd is:',gcd);end.7、将十进制数n转化为k(k<=16)进制整数。const digit:array0.15 of char='ABCDEF'var n

9、,k:integer;procedure tentok(n,k:integer);var r:integer;begin r:=n mod k;n:=n div k; if n<>0 then tentok(n,k); write(digitr);end;begin readln(n,k); tentok(n,k);end.8、阅读程序,该程序读入4,0,2,3,1五个整数序列,回答问题(A)程序执行后输出的结果是( 3 )(B)若将主程序中的程序调用语句binary(3,a,5)改为binary(5,a,5)程序执行后输出的结果是(not found ),改为binary(0,a

10、,4), 程序执行后的结果是( not found)。(C)若将主程序中的程序调用语句binary(3,a,5)改为如下语句:for I:=1 to 2 dobegin t:=aI;aI:=a5-I+1;a5-I+1:=tend;binary(3,a,5);程序执行后输出的结果是Const maxn=5;type at =array1.maxn of integer;var I,t,j:integer;a:at;shift:Boolean;procedure binary(x:integer;a:at;n:integer);VAR low,high,mid:integer;found:bool

11、ean;Begin Low:=1;high:=n;found:=false; While (low<=high) and (not found) do Begin ) div 2; if x>amid then high;=mid-1else if x<amid then low:=mid+1else found:=true end;if found then writeln(amid:5) else writeln(not found)end;begin read(a1);for I:=2 to maxn do read(ai);for I:=2 to maxn dobeg

12、in t:=aI; j:=I-1;shift:=true; while (j>0) and shift dobegin if t>aj then begin aj+1:=aj; j:=j-1; end else shift:=falseend;aj+1:=tend;binary(3,a,5)end.9、program Program4;var m,n,i,j: integer; p,w,a,b: array0.19 of integer;begin read(n); m:= 0; for i:= 0 to n-1 do begin read(pi); bi:=1; end; for

13、 i:=0 to n-1 do begin if (i>0) then am:=pi-pi-1 else am:=pi; m:=m+1;while (m>1) and (am-1=0) do begin m:=m-1; bm:=1; end; if (m>0) then wi:=bm-1 else wi:=b0; am-1:=am-1-1; for j:=0 to m-1 do bj:=bj+1;while (m>1) and (am-1=0) do begin m:=m-1; bm:=1; end; end; for i:= 0 to n-1 do begin wri

14、te(wi); write(' '); end; writeln(' ');end.输入:9 4 6 6 6 6 8 9 9 9 9 输出:_1 1 2 4 5 1 1 3 9_10、 program Gxp2;var i , j , s ,sp1 : integer ; p : boolean ; a : array1.10 of integer ;begin sp1:=1; a1:=2; j:=2; while sp1<10 do begin j:=j+1; p:=true; for i:=2 to j-1 do if (j mod i=0) then

15、 p:=false; if p then begin sp1:=sp1+1; asp1:=j; end; end; j:=2; p:=true; while p do begin s:=1; for i:=1 to j do s:=s*ai; s:=s+1; for i:=2 to s-1 do if s mod i=0 then p:=false; j:=j+1; end; writeln(s); writeln;end.输出 3003111、program p7_9;var a:array1.7,1.13 of integer;i,j,k:integer;begin for i:=1 to

16、 7 do begin for j:=1 to 13 do ai,j:=0; ai,7(i1):=1;ai,7+(i1):=1; for k:=1 to i2 do begin j:=7(i1)+2*k; ai,j:=ai1,j1+ai1,j+1; end; 1 for j:=1 to 13 do 1 1 if ai,j=0 then write(' ') 1 2 1 else write(ai,j:2); 1 3 3 1 writeln; 1 4 6 4 1 end; 1 5 10 10 5 1end. 1 6 15 20 15 6 112、program p7_22;var

17、 a,b:string99;c:array1.100 of char;i,j,k,sum:integer;carry:boolean;begin readln(a);readln(b); i:=length(a);j:=length(b); k:=0;carry:=false; while (i>=1)or (j>=1) do begin k:=k+1; if i>=1 then begin sum:=ord(ai)48;i:=i1end else sum:=0; if j>=1 then begin sum:=sum+ord(bj)48;j:=j1;end; if c

18、arry then sum:=sum+1; if sum>9 then begin carry:=true; ck:=chr(sum10+48); end else begin carry:=false;ck:=chr(sum+48);end; end; if carry then begin k:=k+1;ck:='1' end; while k>=1 do begin write(ck);k:=k1;end;end.输入 35918 13、给定两个字符串a和b,设1<=length(b)<=length(a),求b在a中首次出现的位置,返回结果为正整数。若在a中未找到b,即b不是a的子串,则返回零。分析:这是一个典型的“查找子串”任务。最基本思路是:从a的第一个位置开始,取与b等长的子串,与b比较,若相等则b在a中的位置就是1;若不等则继续,从a的第二个位置开始,取与b等长的子串,与b比较,若相等则b在a中的位置就是2.这样,一直取到&q

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论