李春葆《数据结构教程》(第4版)课后习题-递归(圣才出品)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第5章递归
1.有以下递归函数:
分析调用fun(5)的输出结果。
答:调用递归函数fun(5)时,先递推直到递归出口,然后求值。这里的递归出口语句是,递推时执行的语句是,求值时执行的语句是调用fun(5)的输出结果如下:
2.已知A[n]为整数数组,编写一个递归算法求n个元素的平均值。
答:设avg(A,i)返回A[0..i]这i+1个元素的平均值,则递归模型如下:
对应的递归算法如下:
求A[n]中n个元素平均值的调用方式为:avg(A,n-1)。
3.设计一个算法求整数n的位数。
答:设f(n)为整数n的位数,其递归模型如下:
对应的递归算法如下:
4.设有一个不带表头节点的单链表L,其节点类型如下:
设计如下递归算法:
(1)求以L为首节点指针的单链表的节点个数。
(2)正向显示以L为首节点指针的单链表的所有节点值。(3)反向显示以L为首节点指针的单链表的所有节点值。(4)删除以L为首节点指针的单链表中值为x的第一个节点。(5)删除以L为首节点指针的单链表中值为x的所有节点。
(6)输出以L为首节点指针的单链表中最大节点值。
(7)输出以L为首节点指针的单链表中最小节点值。
答:根据单链表的基本知识,设计与各小题对应的递归算法如下:(1)
(2)
(3)
(4)
(5)
(6)
(7)
上机实验题5
实验题1 编写一个程序exp5-1.cpp,求解皇后问题:在n×n的方格棋盘上,放置n 个皇后,要求每个皇后不同行、不同列、不同左右对角线。要求:
(1)皇后的个数n由用户输入,其值不能超过20,输出所有的解。
(2)采用递归方法求解。
实验题2编写一个程序exp5-2.cpp,求解背包问题:设有不同价值、不同重量的物品
n件,求从这n件物品中选取一部分物品的方案,使选中物品的总重量不超过指定的限制重量,但选中物品的总价值最大。