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=1n​1/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章 递归相关推荐

  1. 谭浩强c语言课后习题笔记[1-4章]

    c语言程序设计(第五版)谭浩强课后习题笔记 文章目录 c语言程序设计(第五版)谭浩强课后习题笔记 第一章 程序设计和c语言 1.4 打印 Hello World 1.6 输入abc求最大值 第二章 算 ...

  2. 算法设计与分析第2章 递归与分治策略

    第2章 递归与分治策略 2.1 递归算法 递归算法:直接或间接地调用自身的算法. 递归函数:用函数自身给出定义的函数.两个要素:边界条件.递归方程 优点:结构清晰,可读性强,而且容易用数学归纳法来证明 ...

  3. 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 ...

  4. Java黑皮书课后题第10章:**10.25(新的字符串split方法)String类中的split方法会返回一个字符串数组,该数组是由分隔符分隔开的子串构成的

    Java黑皮书课后题第10章:**10.25(新的字符串split方法) 题目 代码 运行实例 题目 代码 public class Test25 {public static String[] sp ...

  5. 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 ...

  6. Java黑皮书课后题第10章:*10.13(几何:MyRectangle2D类)定义MyRectangle2D类

    Java黑皮书课后题第10章:10.3 题目 程序 代码 Test13.java Test13_MyRectangle2D.java 运行 UML 题目 程序 Test13.java:测试程序 Tes ...

  7. Java黑皮书课后题第10章:10.2(BMI类)将下面的新构造方法加入BMI类中

    Java黑皮书课后题第10章:10.2(BMI类)将下面的新构造方法加入BMI类中 题目 程序说明 题目槽点 代码:Test2_BMI.java 运行实例 题目 程序说明 Test2_BMI.java ...

  8. Java黑皮书课后题第10章:*10.1(Time类)设计一个名为Time的类。编写一个测试程序,创建两个Time对象(使用new Time()和new Time(555550000))

    Java黑皮书课后题第10章:*10.1设计一个名为Time的类.编写一个测试程序,创建两个Time对象 题目 程序 代码 Test1.java Test1_Time.java 运行结果 UML 题目 ...

  9. Java黑皮书课后题第9章:**9.13(Location类)设计一个名为Location的类,定位二维数组中的最大值及其位置。

    Java黑皮书课后题第9章:**9.13(Location类)设计一个名为Location的类,定位二维数组中的最大值及其位置 题目 破题 代码 Test13 Test13_Location 运行结果 ...

最新文章

  1. 查看Linux系统中某目录的大小
  2. 机器人流程自动化技术的新发展
  3. javascript 之----eval的用法
  4. 手术期间重读《倚天屠龙记》
  5. mysql备份文件0kb_Oracle 数据文件大小为0kb或者文件丢失恢复
  6. 类的序列化[Serializable]
  7. ATM柜员机JAVA课程设计_ATM柜员机学年论文设计(Java课程设计)
  8. 巨划算|¥9.9拼12节美国外教课程,让你家娃像美国孩子一样学习英语!
  9. 帝豪gl车机系统降级_鲜试车丨10万元级国民轿车再升级,试驾2020款吉利帝豪GL...
  10. Cookie和Session的区别和联系
  11. python 使用函数参数注解
  12. 2019中国五大新兴制造业迁徙路径及产业发展趋势全景
  13. 一句话总结行测资料分析八大速算技巧
  14. java 图片拼接_Java实现图片拼接
  15. python 设计单张扑克牌类Card 设计整副扑克牌类Cards
  16. Http 通过setHeader隐藏ip
  17. 以太坊白皮书(中英对照版)
  18. Java java.sql.SQLException: Field ‘xxx‘ doesn‘t have a default value
  19. React Native 音频录制例子来解惑入门,真的已经讲烂了
  20. java笔试题---用*打印漏斗形,信雅达笔试题

热门文章

  1. Linux perf sched Summary
  2. Java生成MD5值
  3. access制作卡片_Access入门教程大全
  4. 智能电话客服机器人的缺点
  5. Go语言相比较于Python的优势
  6. 2020正月初八上海地铁
  7. 微信小程序引入json版的接口
  8. 基于C++实现的猴子选大王-各种排序-纸牌游戏
  9. 排球队员站位问题(回溯法)
  10. Python随便刷刷