课后练习 第4章 递归
R-4.1 对于一个含有n个元素的序列S,描述一个递归算法查找其最大值。所给出的递归算法的时间复杂度和空间复杂度各是多少?
import numpy as npdef find_max(s, n):"""max= {s[0] n = 0{s[0:n-1]和s[n]中的最大值 n >= 1:param s: 含有n+1个数的列表:param n: 列表长度-1,列表最后一个元素的索引:return: 返回列表的最大值"""if len(s) == 0: # 列表为空,返回Nonereturn Noneif n == 0: # 达到递归的基本情况:列表只有一个元素,最大值为s[0]return s[0]tmp_max = find_max(s, n - 1)return tmp_max if tmp_max > s[n] else s[n] # 每次返回MAX(前n个数的最大值,最后一个元素)if __name__ == '__main__':data = np.random.randint(0, 100, size=5, dtype=np.uint8)print(data)maxVal = find_max(data, 4)print("序列data的最大值为:" + str(maxVal))
R-4.2 使用再代码段4-11中实现的传统函数,绘制出power(2, 5)
函数计算的递归跟踪。
R-4.3 如代码段4-12实现的函数所示,使用重复平方算法,绘制出power(2, 18)函数计算的递归跟踪。
R-4.6 描述一个递归函数,用于计算第n个调和数(harmonic number),其中 H n = ∑ i = 1 n 1 / i H_{n}=\sum_{i=1}^{n}1/i Hn=∑i=1n1/i。
def harmonic_number(n):if n == 0:return Noneelif n == 1:return 1else:return harmonic_number(n-1) + 1 / nif __name__ == '__main__':val = harmonic_number(4)print(val)
R-4.7 描述一个递归函数,它可以把一串数字转换成对应的整数。例如,13531’对应的整数为13531。
def convert_int(str, n):if len(str) == 0:return Noneelif n == 0:return int(str[0])else:return convert_int(str, n-1) + int(str[n]) * (10**n)if __name__ == '__main__':str = '13531'print(convert_int(str, len(str) - 1))
课后练习 第4章 递归相关推荐
- 谭浩强c语言课后习题笔记[1-4章]
c语言程序设计(第五版)谭浩强课后习题笔记 文章目录 c语言程序设计(第五版)谭浩强课后习题笔记 第一章 程序设计和c语言 1.4 打印 Hello World 1.6 输入abc求最大值 第二章 算 ...
- 算法设计与分析第2章 递归与分治策略
第2章 递归与分治策略 2.1 递归算法 递归算法:直接或间接地调用自身的算法. 递归函数:用函数自身给出定义的函数.两个要素:边界条件.递归方程 优点:结构清晰,可读性强,而且容易用数学归纳法来证明 ...
- Java黑皮书课后题第11章:11.2(Person Student Employee Faculty Staff类)设计一个名为Person的类及其两个名为Student和Employee的子类
Java黑皮书课后题第11章:11.2(Person Student Employee Faculty Staff类) 题目 缺陷 UML图 代码 Test02_MyDate.java:用于参考的My ...
- Java黑皮书课后题第10章:**10.25(新的字符串split方法)String类中的split方法会返回一个字符串数组,该数组是由分隔符分隔开的子串构成的
Java黑皮书课后题第10章:**10.25(新的字符串split方法) 题目 代码 运行实例 题目 代码 public class Test25 {public static String[] sp ...
- Java黑皮书课后题第10章:10.21(被5或6整除)找出能被5或6整除的大于Long.MAX_VALUE的前10个数字
Java黑皮书课后题第10章:10.21(被5或6整除)找出能被5或6整除的大于Long.MAX_VALUE的前10个数字 题目 代码 结果 题目 都在上面 代码 import java.math.B ...
- Java黑皮书课后题第10章:*10.13(几何:MyRectangle2D类)定义MyRectangle2D类
Java黑皮书课后题第10章:10.3 题目 程序 代码 Test13.java Test13_MyRectangle2D.java 运行 UML 题目 程序 Test13.java:测试程序 Tes ...
- Java黑皮书课后题第10章:10.2(BMI类)将下面的新构造方法加入BMI类中
Java黑皮书课后题第10章:10.2(BMI类)将下面的新构造方法加入BMI类中 题目 程序说明 题目槽点 代码:Test2_BMI.java 运行实例 题目 程序说明 Test2_BMI.java ...
- Java黑皮书课后题第10章:*10.1(Time类)设计一个名为Time的类。编写一个测试程序,创建两个Time对象(使用new Time()和new Time(555550000))
Java黑皮书课后题第10章:*10.1设计一个名为Time的类.编写一个测试程序,创建两个Time对象 题目 程序 代码 Test1.java Test1_Time.java 运行结果 UML 题目 ...
- Java黑皮书课后题第9章:**9.13(Location类)设计一个名为Location的类,定位二维数组中的最大值及其位置。
Java黑皮书课后题第9章:**9.13(Location类)设计一个名为Location的类,定位二维数组中的最大值及其位置 题目 破题 代码 Test13 Test13_Location 运行结果 ...
最新文章
- 查看Linux系统中某目录的大小
- 机器人流程自动化技术的新发展
- javascript 之----eval的用法
- 手术期间重读《倚天屠龙记》
- mysql备份文件0kb_Oracle 数据文件大小为0kb或者文件丢失恢复
- 类的序列化[Serializable]
- ATM柜员机JAVA课程设计_ATM柜员机学年论文设计(Java课程设计)
- 巨划算|¥9.9拼12节美国外教课程,让你家娃像美国孩子一样学习英语!
- 帝豪gl车机系统降级_鲜试车丨10万元级国民轿车再升级,试驾2020款吉利帝豪GL...
- Cookie和Session的区别和联系
- python 使用函数参数注解
- 2019中国五大新兴制造业迁徙路径及产业发展趋势全景
- 一句话总结行测资料分析八大速算技巧
- java 图片拼接_Java实现图片拼接
- python 设计单张扑克牌类Card 设计整副扑克牌类Cards
- Http 通过setHeader隐藏ip
- 以太坊白皮书(中英对照版)
- Java java.sql.SQLException: Field ‘xxx‘ doesn‘t have a default value
- React Native 音频录制例子来解惑入门,真的已经讲烂了
- java笔试题---用*打印漏斗形,信雅达笔试题