递归递推练习题

这篇文章提出了多个编程挑战,包括使用递归计算序列和数值(如1+2+...+N,斐波那契数列,阶乘),实现阿克曼函数,解决汉诺塔问题,以及寻找行走路径和物品搬运策略。此外,还讨论了苹果的分配方式和正整数的分解问题。
摘要由CSDN通过智能技术生成

1.用递归的方法1+2+3+…+N的值(in:5,out:15)

2.输出斐波那契数列的第N项,0,1,1,2,3,5,8,13…(in:3,out:1)

3.求n!(in:5,out:120)n!=123…*n

4.阿克曼(ackmann)函数A(m,n)中,m,n定义域是非负整数(m<=3,n<=10),函数值定义为(m,n in:2 3,out:9):
在这里插入图片描述

5.有5个人坐在一起,问第五个人多少岁,他说比第四个人大1岁;问第四个人多少岁,他说比第三个人大一岁;问第三个人多少岁,他说比第二个人大一岁,问第二个人多少岁,他说他比第一个人大一岁,问第一个人多少岁,他说他8岁,请问第5个人多少岁。(in:5,Out:12)

6.儿童节那天,有6位同学参加了钓鱼比赛,他们每个人钓到的鱼的数量都各不相同。问第一位同学钓了多少条鱼时,他指着第二位同学说比他多钓两条,问第二位同学,他又说比第三位同学多钓了两条鱼。最后问到第6位同学时,他又说自己钓了3条鱼。请问第一位同学钓了多少条鱼?(in:1,out:13)

7.设一共有n级台阶的楼梯,某人每步可走1级,也可以走2级,用递推的方式可以计算出某人从底层开始走完全部台阶的走法。例如,当n=3时,共有3种走法,即1+1+1,1+2,2+1.当n=6时,从底层开始走完全部台阶的走法共有多少种?(dt)

8.小马需要将N件物品从河的一岸搬运到河的另一岸,每次搬运的物品为1到3件。请问小马将N件物品全部搬运过去有多少种方案
例如: N=3,将3件物品全部搬运过去有4种方案:
方案一: 第一次搬运1件,第一次搬运1件,第三次搬运1件;
方案二: 第一次搬运1件,第二次搬运2件;
方案三: 第一次搬运2件,第二次搬运1件:
方案四: 一次搬运3件。
输入描述
输入一个正整数N,表示需要搬运的物品数输出描述输出将N件物品全部搬运过去有多少种方案
样例输入:3
样例输出:4
样例输入:4
样例输出:7

9.设计一个算法,汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。有三个单字符字符串和一个整数。三个字符表示三个杆子的编号,整数为盘子的数目。
根据上述计算规则,补全下列代码。
函数名:hannota(n,a,b,c)
参数表:n – 正整数表示盘子数,a --a杆子,b --b杆子,c --c杆子。
返回值:移动路径。
示例:n=3,返回:
A --> C
A --> B
C --> B
A --> C
B --> A
B --> C
A --> C

10.有一张 m*n 个小方格的地图,一个机器人位于地图的左上角(如图标记为Start 的地方),它每步只能向右或者向下移动一格,如果走到右下角的终点(如图标记为 Finish 的地方),有多少种不同的方法?
在这里插入图片描述

例如,一个 3x2 的地图,行走的方法数是 3 种,分别是
1.右>右>下
2.右>下->右
3.下->右>右
输入描述: 两个整数 m(m<=100)和 n(n<=100),代表地图的行数和列数
输出描述: 一个整数,表示行走的方法数。
[样例输入]
88
[样例输出]
3432

10.描述
把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法。
输入
第一行是测试数据的数目t(0 <= t <= 20)。以下每行均包含二个整数M和N,以空格分开。1<=M,N<=10。
输出
对输入的每组数据M和N,用一行输出相应的K。
样例输入
1
7 3
样例输出
8

11.描述
给出一个正整数a,要求分解成若干个正整数的乘积,即a = a1 * a2 * a3 * … * an,并且1 < a1 <= a2 <= a3 <= … <= an,问这样的分解的种数有多少。注意到a = a也是一种分解。
输入
第1行是测试数据的组数n,后面跟着n行输入。每组测试数据占1行,包括一个正整数a (1 < a < 32768)
输出
n行,每行输出对应一个输入。输出应是一个正整数,指明满足要求的分解的种数
样例输入
2
2
20
样例输出
1
4

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值