递归基础练习题.docx

上传人:b****6 文档编号:6970549 上传时间:2023-01-13 格式:DOCX 页数:13 大小:175.15KB
下载 相关 举报
递归基础练习题.docx_第1页
第1页 / 共13页
递归基础练习题.docx_第2页
第2页 / 共13页
递归基础练习题.docx_第3页
第3页 / 共13页
递归基础练习题.docx_第4页
第4页 / 共13页
递归基础练习题.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

递归基础练习题.docx

《递归基础练习题.docx》由会员分享,可在线阅读,更多相关《递归基础练习题.docx(13页珍藏版)》请在冰豆网上搜索。

递归基础练习题.docx

递归基础练习题

递归基础练习题递归基础练习题

1.求1+2+3+……+n的值

2.求1*2*3**n的值

3.数的全排列问题。

将n个数字1,2,…n的所有排列按字典顺序枚举出来

231

213

312

3214数的组合问题。

从1,2,-,n中取出m个数,将所有组合按照字典顺序列出。

如n=3,m=2时,输岀:

12

13

23

个.第二天早上又将剩

.以后每天早上吃前一天剩

第10天早上猴子想再吃时发现,只剩

问第一天猴子共摘多少个桃子?

8.著名的菲波拉契(Fibonacci)数列,其第一项为1,第二项为1,从第三项开始,其每一项都是前两项的和。

编程求出该数列前N项数据。

阶,也可以一次

个程序,计算共有多少种不同的走

15.梯有N阶,上楼可以一步上二阶。

编法。

6.有雌雄一对兔子,假定过两个月便可繁殖雌雄各—对小兔子。

问过n个月后共有多少对兔子?

个人赶着鸭子去每卖去所赶鸭子的一半又一只。

这样他经过了七个村子后还剩两只鸭子,问他出发时共赶多少只鸭子?

经过每个村子卖出多少只鸭子?

11.输入

12.

个数,求这个数的各位数字之和。

自然数,若为偶数,则把

角谷定理。

输入一个

它除以2,若为奇数,则把它乘以3加1。

经过如

此有限次运算后,总可以得到自然数值1。

求经过多少次可得到自然数1。

如:

输入22,

出2211341752261340201051684

21

STEP二26

13.将十进制转换为二进制。

14.计算M=max(a,b,c)/[max(a+b,b,c)*max(a,b,b+c)],M中a,b,c由键盘输入。

某人写了n封信和n

个信封,如果所有的信者b言封。

求所有的信都装错信封共有多少种不

装错

整数之和的方法总数。

19.已知

数MO如能使数组A

个一维数组A[1..N]O{N<50}又已知一整中任意几个元素之和等于

M,则输出YES,反之则为NOo

20.要求找出具有下列性质的数的个数(包含输入的

八自然数n(n<=500),然后对此自然数按照

I然数n):

先输入如下方法进行处理:

1.不作任何处理;

2

个自然数,但该自然数不能超

.在它的左边加二-过原数首位数字的一三

3.加上数后,继续按此规则进行处理,直到不能再加自然数为丄二.

样例:

输入:

6满足条件的数为6

16

26

126

36136输出:

6

21.

自然数的和。

输出所有解,每组解中数字按从

自然数的拆分问题。

给定自然数n,将其拆分成若

小到大排列。

相同数字的不同排列算一组解。

如:

3二2+1+13二1+23二3

22.用递归的方法求N个数中最大的数及其位置。

23.写出折半查找的递归算法。

24.快速排序法。

思考题:

1、数学宝塔,从最顶上走到最底层,每次只能

层的左边或右边的数字,求出使所走至[

走到

的所有数字之和为60的途径。

5

6

25

2、汉诺塔问题;设有有Z个直径不同的

39

42

个塔座,依次命名为x,y,z。

由小到大依次编号为1、

小的圆盘上。

典型例题:

no"o

2•设有n个数已经按从大到小的顺序排列,现在从键盘上输入n,判断它是否在这n个数在则输出“yes否”则输出“

Program1x4;

Constn二30:

Vara:

array[l..n]ofinteger;

F,r,x,k:

integer:

Programsearch(x,top,bot:

integeij;

Varmid:

integer;

Begin

iftopv二botthen

Begin

Mid二(top+bot)div2;

IfX=a[mid]thenwriteIn(x:

5,nnid:

5,s')ye

elseIfx

Elsesearch(x,mid+l,r);

End

elseWriteln(x:

5,*no');

End;

Begin

WritelnCinpnutgeshu');

Fork:

=ltondoread(a[k]);

Read(x);

F:

=l;r:

=n;

Search(x,f,r):

End.

2.Hanoi塔问题。

递归:

procedureHanoi(n:

integer:

x,y,z:

char);

Begin

Ifn二1thenwriteln(x,n-,--',z)

Elsebegin

Hanoi(n-2,x,z,y):

Writeln(x,',z;)Hanoi(n-

l,y.x.z)

End;

End;

Begin

Write(inpunt:

');

Read(n);

Hanoi(n,A,'B',C)

End.

3.有n个硬币(n为偶数)正面朝上排成一排,每次将nd个硬币翻成朝上为止。

编程让计算机把翻硬币的最简过程及翻币次数打印出来(用*代表正面,用0代表反面)。

基本形式:

D[l]二0;d[2]二1

递归式:

d[n]=(n-l)*(d[n-l]+d[n-2])varn:

integer;

functiond(n:

integer):

longint;

begin

casenof

l:

d:

=0;

2:

d:

=l;

elsed:

=(n-l)*(d(n-l)+d(n-2));

end;

end;

begin

「epeat

write('n二');

readln(n);

ifnv=0thenwnteInCOncemorer)

untiln>0;

writeln('d=',d(n));

readIn;

end.

个月后共有多少对兔子?

递归的

4.有一对雌雄兔子,假定两个月便可以繁殖雌雄各—对兔子。

要素:

个月Programrabbit;

递归的形式:

T[n]=T[n-1]+T[n-2]基本:

T[l]=l,T[2]二1结束条件:

nvarn:

integer;

functionfa(n:

integeij:

integer;

begin

ifn<3thenfa:

=l

elsefa:

=fa(n-l)+fa(n-2);

end;

begin

write('n二');readln(n);

writeln('Thenumberoftherabbits:

',fa(n));end.

个程序,计算共有多少种不同的走

5.梯有N阶,上楼可以一步上一价,也可以一次上二阶。

法。

递归的形式•s[n]=s[n-l]+s[n-2]

基本式子:

s[l]=l;s[2]=2programupstairs;

varn:

integer;

functions(n:

integer):

longint;

begin

if(n二l)o「(n二2)thens:

二n

elses:

=s(n-l)+s(n-2);

end;

begin

repeatwrite('N='):

readln(n);untiln>0;writeln('s二:

s(n));readIn;

end.

6.斐波那切数列

递归:

varm,p:

integer;

Functionfib(n:

integer):

integer:

Begin

Ifn=0thenfib:

=O

Elseifn二1thenfib:

二1

Elsefib:

=fib(n-l)+fib(n-2);

End;

Begin

Read(m);

P:

二fib(iTi);

Writeln(■fib(',mm')=',p)

End.

7.设有2An个运动员要进行网球比赛。

现要设计—个满足以下要求的比赛日程表:

(2)、每个选手必须与其他个选手各赛一次;

(2)、每个选手每天只能参赛一次;

(3)、循环赛在n-2天内结束。

Programmatch;constk=3;n=8;

var

s:

array[l..n,l..n]ofinteger;i,j,p:

integer;

ju:

boolean;

procedurecopyl(be,en:

integer;jug:

boolean;q:

integer);

varm,t,ban:

integer;

begin

ifjugthen

begin

ifbe=lthen

beginifs[en,en]=0then

begincopyl(be,endiv2,true,qdiv2);

copy2((endiv2)+l,enJalse,qdiv2);

end;

form:

=ltoendo

fort:

=ltoendo

s[m+q,t+q]:

=s[m,t]end

elsebeginifs[be+q-l,q]=0then

begincopyl(be,be+(qdiv2)-1,true,qdiv2);

copyl(be+(qdiv2),en,false,qdiv2)

end;

form:

二betoendofort:

=ltoqdos[m+q,t+q]:

=s[m,t]endendelsebeginifs[be,q]=0then

begincopyl(be,be+(qdiv2)-1,true,qdiv2);

copyl(be+(qdiv2),en,false,qdiv2)end;

form:

二betoendo

fort:

=ltoqdos[m-q,t+q]:

=s[m,t]end

end;

begin

p:

=8;

fori:

=ltondo

forj:

=ltondo

s[i,j]:

二0;

fori:

=ltondo

begins[i,l]:

=i;ifodd(i)thens[i+l,2]:

=s[i,l]elses[i-l,2]:

=s[i,l]:

end;

copyl(l,ndiv2,true,pdiv2);copyl((ndiv

2)+1,n,false,pdiv2);

fori:

=ltondo

begin

forj:

=ltondowrite(s[ij],'');

writein;

end;

end.

以下是USACOcontest±的题目,全是递归

BRONZEPROBLEMS

Problem11:

谷仓的安保[Traditional,2005]FarmerJohn给谷仓安装了一

人奶牛安排

(3V二LV二15)

人新的安全系统,并且要给牛群

个有效的密码。

一个有效的密码由L

个小写字母(来自传统的拉丁字母

集’al.N)组成,至少有U),至少两个辅音有按字母表顺序出现的字母(例如abc'是有效的,而'bac'不是)给定一个期望长度L和C

人程序,打印出所有的长度为L、

个元音Ca\O,T,0,或者

),并且

(除去元音以外的音节

个小写字母,

能由这些字母组

成的有效密码。

密码必须按字母表顺序打印出来,人

O

题目名称:

passwd输入格式:

*第一行:

个由空格分开的整数,L和C*第二行:

C

个空格分开的小写字母,密码是由这个字母集中的字母来构建的。

 

输入样例(文件passwd.in):

46atCiSW输入详细说明:

由从给定的六个择的、长度为4的密码。

输出格式:

*第一至?

行:

字母中选

个输出行包括

个字符的密码(没有空格)。

输出行必须按照字母顺序排列。

输出样例(文件passwd.out):

acis

acitaciwacstacswactwaistaiswaitwastwcist

ciswcitwistw

Problem12:

”跳房子“[HalBurch,2005]奶牛们按不太传统的方式玩起了小孩子们玩的跳房子“游戏。

奶造了

—人

们创

5x5的、由与x,y轴平行的数字组成的直线型网格,而不是用来在里面跳的、线性排列的、带数字的的数字中跳:

方格。

然后他们熟练地在网格中

/、/

向刖

旬左跳

(从不斜过来跳),跳到网格中的另

个数字上。

 

,门再这样跳啊跳(按相同规则),跳到另外字)O

—共在网格内跳过五次后,他们的跳跃构建了位整数(可能以0开头,

例如000201)O求出所有能被这样创造出来的不同整数的总数。

问题名称:

numgrid

输入格式:

第1到5行:

这样的网格,一行5个整数输入样例(文件numgrid.in):

11111

11111

11111

11121

11111

输出格式:

*第1行:

能构建的不同整数的总数

输出样例(文件numgrid.out):

15

输出详细说明:

111111,111112,111121,111211,111212,112111,1

12121,121111,121112,121211,121212,211111,211121,212111和212121能够被构建。

没有其它可冃巾数了。

Problem13:

卫星照片[RobKolstad,2005]

FarmerJohn给他的农场买了WxH像素的卫星照片(1V二WV二80,1V二H

<=1000),希望找出最大的“连续的“像素如果能椎八像素相连,这样的牧场称作是连续的(这句话太难翻了,大家将就着理解一下,看了后面的范例应该不会影响做题一译者)。

(很容易创建形状稀奇古怪的牧场,甚至是围着其它圆圈。

)每一张照片都数字化的抽象了,牧场,非牧场区显示为O

的卫星照片样例:

牧场。

任何一对像素,-的与属于这个牧场的另

X显示为

(互相连接的「向的或纵向

面是一人

10x5

 

这张照片显示了大小分别为4、16、6个像素的连续牧场区。

帮助FJ在他的每张卫星照片中找到最大的连续牧场。

问题名称:

satpix输入格式:

个由空格分开的整数,H和W。

*第1行:

两*第2到H+1行:

每一行包含W个V或者…,代表卫星照片的横向行。

输出样例(文件satpix.in):

105

输出格式:

*第1行:

最大连续牧场的大小输出样例(文"

satpix.out):

16

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1