教科版2019信息技术必修1数据与计算第4单元计算与问题解决4.3 初识非数值计算教学设计0
数据的计算+课件++2023—2024学年教科版(2019)高中信息技术必修1

◆1—10之间能被3整除的数有多少? ◆1—100之间能被3整除的数有多少? ◆1—10000之间能被3整除的数有多少?
第1单元 初识数据与计算
拓展活动2
问题再分析
◆鸡兔同笼问题 ◆韩信点兵问题 ◆百鸡百钱问题
1.2 数据的计算(第2课时 如何选择)
韩信点兵问题:
问题描述:
韩信有一对士兵,他想知道有多少人,他就让士兵报数, 如果按照1到5报数,最末一个士兵报的数为1;按照1到6 报数,最末一个士兵报的数为5;按照1到7报数,最末一 个士兵报的数为4;最后再按1到11报数,最末一个士兵报 的数为10,请问韩信这队士兵最少有多少人?
第1单元 初识数据与计算
项目实施
1.2 数据的计算(第2课时 如何选择)
选择电子表格
第1单元 初识数据与计算
项目实施
讨论
1.2 数据的计算(第2课时 如何选择)
如何根据问题需求,灵活选择 合适的计算方式?
对不同问题需求做出自己的选择, 把体会写下来,在实践中总结知识。
第1单元 初识数据与计算
总结评价
数据的计算方式
人工计算
电子表格 计算
编程计算
第1单元 初识数据与计算
项目实施
1.2 数据的计算(第2课时 如何选择)
任务二:解决“鸡兔同笼”问题的计算方式比较
计算方式 使用成本
人工计算
考察的方面 使用方便性 计算速度 其他元 初识数据与计算
拓展活动1
计算小达人
1.2 数据的计算(第2课时 如何选择)
1.2 数据的计算(第2课时 如何选择)
1. 梳理本节课所学
2. UMU网络课程中完成课程评价, 你有哪些收获呢?
谢谢,再见
教科版(2019)高中信息技术必修一 4.3 非数值计算 课件(20张ppt)

解决实际问题。
• 本项目主要包含“巧翻字典”和“玩转‘汉诺塔’游戏”两个任务。
※活动统计查字典次数
•
查汉字、查单词、查成语等查字典的活动,早已成为我们学习生活
的一部分。假设一本字典一千页,目标页数在328页。在下表填写翻页
过程。
•
有的同学翻得特别快,他们用了什,是算法思想的体现。
•
有了翻字典的实际操作经验,我们来尝试完善下面的二分查
找程序。
• x=int(input("请输入要查找的1000以内的整 数:"))
• step=0
记录查找次数
• flag1=1
目标区域左边界
• flag2=1000
目标区域右边界
• while(flag1<=flag2): 小于1则结束循环
区间数据范围
次数: 18446744073709551615。 婆罗门以1秒移动1次的速度,不眠不休要花 5849万万年生活中的递归
要使移动次数尽可能少,必须排除无效移动。现在有8个木盘,不妨先以3个 木盘为例,观察一下移动的过程。请在图4.3.2中记录木盘移动的过程。
每层汉诺塔至少需要多少步
• 1层:1次 • 2层:3次 • 3层:7次 • 4层:15次 • 5层:31次 • 6层:63次 • 7层:127次 • 8层:255次
使用计数器结束循环。
•
迭代程序可以转换成等价的递归程序。以上一节中计算斐波那契数列第n项
的值为例,程序间的转换如表4.3.2所示。
4.3 非数值计算
4.3 非数值计算
•
在数值计算中,我们更多考虑的是“数”,但计算应该是一个更广泛
的领域。计算的对象可以是自然界和人类社会的一切事物。更确切地说,
4.3 非数值计算(二分查找)课件 -2023—2024学年高中信息技术教科版(2019)必修1

elif mid < x:
#区域中间值大于目标数
flag1 = mid + 1 #范围往右侧区域找 = 左边界后移
else:
break
print('查找次数为:',step)
任务:巧翻字典
x = int(input('请输入要查找的数据:'))
上机实践1
step = 0
#查找次数
flag1 = 1
知识探究:二分查找/折半查找
二分思想:将数列有序排列,采用跳跃的方式 查找数据。
在有n个元素的有序序列中,利用二分查找大
约需要log2n次。
n = 1000 需要10次
任务:巧翻字典 程序编写——补充程序
x = int(input('请输入要查找的数据:'))
step = 0
#查找次数
flag1 = 1
项目内容
本节我们将围绕“生活中的算法”项目,尝试用“算法的 眼睛”看待生活,用“算法的思维”去解决实际问题。
项目任务
本节任务
➢ 任务一:巧翻字典
➢ 任务二:玩转“汉诺塔”游戏
任务:巧翻字典 活动:统计查字典次数
➢ 查汉字、查单词、查成语等查字典的活动,早已成为我们学习生活的部分。假设一本 字典大约1000页,目标信息在第328页。请记录你翻页过程,和同学们比比,看谁翻 的次数最少。
二分查找的应用:找出1-1000之间的某个数
import random x = random.randint(1,1000)
while 0<x<1000: y = int(input("请输入这个数:")) if x<y: print("大了") elif x>y: print("小了") else: print("就是",x) break
教科版2019信息技术必修1数据与计算第4单元计算与问题解决4.1 算法及其特征教学设计

教科版2019信息技术必修1数据与计算第4单元计算与问题解决4.1 算法及其特征教学设计【教材分析】程序设计是给出解决特定问题程序的过程。
程序设计往往以某种程序设计语言为工具,给出这种语言下的程序。
算法是程序设计中的核心,算法依赖程序设计语言来实现。
程序设计语言有较大的局限性,不能用来解决所有类型的问题,人们要根据所需解决的问题不同而选择不同的语言,而语言本身也在不断变化和更新。
因此,语言具有不稳定和变化更新快的特征;算法则比较稳定,它与描述算法的语言无关,可以在更长的时间内发挥作用。
程序设计语言只要多实践多使用就能熟能生巧,算法则需要比较深入的理论基础知识,必须经过严格的科学训练。
基于以上认识,程序设计语言知识可以作为一种技能来培养,程序设计方法可以作为一个规则来遵循,算法可以作为科学方法来传授,这样才能适应时代的需要,跟上技术的飞速发展。
通过前面单元的学习,我们可以认为学生具备初步编写程序的简单技能,如基本的输入输出语句、选择结构和循环结构的语句实现、列表及文件的初步操作等。
本项目既要唤醒学生已有的技能,又要让学生初识算法,因此在项目及活动设计时,抛开晦涩难懂的概念和语法,不做内容上的堆积和罗列,采用了生动有趣的活动形式,每个活动中会涉及到一个或几个知识点。
代码不是最终目的,而是作为载体,让学生初步了解程序设计的基本方法,在面对实际问题的时候,可以换一种思维,找到有效的算法。
本节的项目“软件开发社招新”主要包含“探讨面试题的解决方案”和“求解‘谁是冠军’”两个任务,包含4个活动。
任务一的重点在已有知识和技能的唤醒,任务二的重点是最基本算法思想的介绍。
【教学建议】通过本项目的教学应让学生了解程序设计的基本方法和基本流程,利用学生感兴趣的实例,让学生感觉程序设计并不是遥不可及的,而是人机对话的一种方式,让学生带着轻松的心情,在游戏中学习,在学习中游戏。
以活动为中心,增加拓展类知识,兼顾到不同层次学生的需求。
4.3非数值计算优秀教学案例教科版高中信息技术必修1

(三)学生小组讨论
1.分组讨论:将学生分成若干小组,针对提出的问题,进行小组讨论,共同设计算法解决方案。
2.分工协作:在小组内部分工,每个学生负责一部分算法的设计和实现,培养学生的团队合作意识。
3.互动交流:鼓励小组间的交流与合作,分享算法设计经验,提高学生之间的学习互动性。
3.教师评价:教师对学生的算法设计进行评价,关注学生的学习过程和成果,给予鼓励和指导,提高学生的学习积极性。
4.总结反思:在本章节内容结束时,组织学生进行总结反思,让学生回顾学习过程,加深对非数值计算算法的理解。
四、教学内容与过程
(一)导入新课
1.生活实例引入:以网络购物为例,展示购物推荐系统的非数值计算过程,引发学生对非数值计算的好奇心。
1.布置作业:布置与本节课相关的问题,让学生课后巩固所学知识,提高实际应用能力。
2.作业反馈:要求学生提交作业,教师对作业进行批改,给予反馈,帮助学生提高。
3.作业评价:对学生的作业进行评价,关注学生的知识掌握程度和实际应用能力,为下一步教学提供参考。
五、案例亮点
1.生活实例引入:通过网络购物的实际案例引入非数值计算的概念,使学生能够更加直观地理解非数值计算在现实生活中的应用,提高学生的学习兴趣和积极性。
2.创设问题情境:提出问题:“为什么购物推荐系统能给我们推荐合适的商品?”引导学生思考非数值计算在实际应用中的作用。
3.展示本节课目标:告知学生本节课将学习非数值计算的相关知识,帮助学生建立学习目标。
(二)讲授新知
1.非数值计算概念:讲解非数值计算的定义,让学生理解非数值计算的基本概念。
2.算法基本概念:介绍算法的基本概念,如输入、输出、有穷性、确定性等,帮助学生建立算法思维。
4.3非数值计算(神奇的递归)教学设计-2023—2024学年高中信息技术教科版(2019)必修1

板书设计
1.递归的概念与原理
①递归定义:一种自己调用自己的函数。
②递归结构:递归函数的调用过程。
③递归终止条件:确定递归何时停止。
2.递归的编程实现
①递归函数的实现:如何编写递归函数。
return fibonacci(n-1) + fibonacci(n-2)
```
3.例题三:递归求解汉诺塔问题
题目:编写一个递归函数,解决汉诺塔问题,将n个盘子从源柱子移动到目标柱子。
答案:
```python
def hanoi(n, source, target, auxiliary):
if n == 1:
2.鼓励学生探索递归算法的优化方法,如何减少递归调用栈的大小,避免栈溢出问题。可以让学生尝试研究一些经典的递归算法优化技巧。
3.让学生了解递归算法在实际软件开发中的应用,例如在编译器的设计中,递归用于解析语法树;在图形引擎中,递归用于计算视锥体内的物体数量等。可以提供一些实际的案例,让学生了解递归在实际项目中的应用。
4.3非数值计算(神奇的递归)教学设计-2023—2024学年高中信息技术教科版(2019)必修1
授课内容
授课时数
授课班级
授课人数
授课地点
授课时间
教材分析
本节课的主题是“4.3非数值计算(神奇的递归)教学设计-2023—2024学年高中信息技术教科版(2019)必修1”。本节课的内容主要包括递归的概念、递归的实现以及递归的应用。通过本节课的学习,学生能够理解递归的原理,掌握递归的编程实现,并能够运用递归解决实际问题。
4.3非数值计算(第一课时)优秀教学案例教科版高中信息技术必修1

3.实践操作:让学生亲身体验智能家居设备的工作原理,如语音识别技术,提高学生的动手操作能力。
4.总结提升:引导学生关注科技进步,为未来的智能化生活做好准备,培养学生的社会责任感和使命感。
(三)情感态度与价值观
2.小组讨论活动:将学生分成若干小组,让他们就某一智能家居设备的非数值计算实现方法进行讨论。这样的教学方式既能够培养学生的团队协作能力,又能够激发学生的创新思维和探究欲望。
3.实践操作与案例分析相结合:在讲解非数值计算的原理和应用时,不仅以理论讲解为主,还结合了实践操作和案例分析。这样能够让学生更好地理解和掌握所学知识,提高学生的知识运用能力。
四、教学内容与过程
(一)导入新课
1.生活实例:以智能家居设备为例,如智能音响、智能照明等,引导学生关注非数值计算在现实生活中的应用。
2.问题提出:提出问题,如“智能音响是如何识别语音指令的?”“智能照明系统是如何实现场景切换的?”激发学生的好奇心和求知欲。
3.情景创设:通过展示智能家居设备的实际操作视频,让学生身临其境地感受非数值计算的实际应用,为后续学习做好铺垫。
在讲解非数值计算的原理和应用时,我以智能音响为例,引导学生了解其工作原理。首先,我让学生了解智能音响的硬件构成,如麦克风、扬声器、处理器等。然后,通过实际操作,让学生观察和分析智能音响如何识别语音指令并做出相应响应。在这个过程中,学生可以深刻体会到非数值计算在智能音响中的应用。
为了让学生更好地掌握非数值计算的方法,我设计了一个小组讨论活动。学生分组探讨其他智能家居设备是如何实现非数值计算的,并presentation进行分享。通过这个活动,学生不仅可以巩固所学知识,还能提高团队合作能力和口头表达能力。
《4.3 非数值计算》作业设计方案-高中信息技术教科版19必修1

《非数值计算》作业设计方案(第一课时)一、作业目标本作业旨在帮助学生理解非数值计算的基本概念,掌握常用计算工具和方法,以及如何使用这些工具和方法解决实际问题。
二、作业内容1. 实践操作:选择一种常用的计算工具(如Excel、Python 等),模拟一个简单的非数值计算任务,如统计一组数据、绘制图表等。
任务难度可根据学生掌握程度进行调整。
2. 阅读理解:阅读一篇关于非数值计算的科普文章,回答其中涉及的问题。
这些问题可以是文章中提出的疑惑,也可以是对文章内容的进一步解释和思考。
3. 案例分析:针对一个具体的非数值计算问题(如数据分析、人工智能应用等),分析问题背景、涉及的计算方法和工具,并给出解决方案。
解决方案可以是文字描述或简单的代码实现。
三、作业要求1. 作业应在规定时间内完成,并提交电子版作业文档。
2. 实践操作部分需展示所选工具的使用过程和结果,并附上相关说明和注释。
3. 阅读理解部分需回答正确率不低于80%。
4. 案例分析部分需详细描述问题背景、计算方法和工具选择,并给出合理解决方案。
解决方案应包括必要的代码实现和注释。
四、作业评价1. 作业评价将根据完成质量、正确率、创新性等方面进行评分。
2. 学生可参考教师提供的参考答案自行检查作业完成情况,如有疑问可与教师沟通解决。
3. 评价结果将作为学生平时成绩的参考之一。
五、作业反馈1. 学生提交作业后,教师将对作业进行批改,并及时将反馈结果通知学生。
2. 对于作业中存在的问题,教师将提供指导和建议,帮助学生更好地理解和掌握相关知识。
3. 学生可针对作业反馈提出疑问,与教师进行交流和讨论,共同提高教学质量。
在实践操作部分,学生需要选择一种常用的计算工具并展示其使用过程和结果。
教师可以通过观察学生的操作过程和结果来评估学生对该工具的理解和掌握程度。
在阅读理解部分,教师需要评估学生对非数值计算的基本概念和常用计算工具的理解程度。
在案例分析部分,教师需要评估学生是否能够针对实际问题选择合适的计算方法和工具,并给出合理的解决方案。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
教科版2019信息技术必修1数据与计算第4单元计算与问题解决4.3 初识非数值计算教学设计教材分析强调“项目—任务—活动”结构与核心素养达成的一体化设计思想,强调在项目的真实情境下,通过任务的达成,展开一系列活动,在活动过程中通过搭建思维支架,不断建构知识,发展思维,使得生活、学习、知识技能、思维发展浑然一体,最终促进学生核心素养的全面、均衡发展。
“项目—任务—活动”式结构不是一个静态的结构,它反映了学生知识建构与思维生成的动态过程。
知识建构、思维发展乃至核心素养的形成都是在特定情境中围绕活动而自然生成的。
如果说本单元4.1为模仿阶段,4.2为形象思维阶段,4.3就是抽象思维阶段。
本项目的重点应是基本思想和方法的教学,要能够恰当地引导,就能够使学生准确地领悟思想,从而较好地掌握基本方法。
分治是最常用的算法设计思想,查找是算法中最常见的操作,递归是算法在实现时的常用手段。
本节我们将围绕项目“生活中的算法”展开学习,尝试用计算机的视角去解决实际问题。
本项目主要包含“巧翻字典”和“玩转‘汉诺塔’游戏”两个任务。
任务一主要介绍分治中最经典的二分思想;任务二借助汉诺塔游戏重在介绍递归思想及算法实现。
教学建议针对学生的认知水平及认知习惯,通过引导、启发、设问等方式,为学生设置真实项目或问题情境,在活动中为学生知识建构关键点和思维生发关键点搭建思维支架,使学生在自主探究或解决问题的过程中产生较强的学习动机,在不断发现中习得知识、发展思维、提升能力。
在该课程的教学方法上,应以程序设计的实例带动语言知识的学习,把程序设计当作科学方法的训练,把语言知识的应用作为技能的培养,全面推行“模仿——形象思维——抽象思维”三个由浅入深的阶段的教学。
学生的主要活动是积极思考、广泛交流、主动探究。
他们学到的不仅仅是新知识,更重要的是学会了解决问题的方法,知道了什么时候、在什么地方去应用所学的知识。
任务一通过巧翻字典的情境引出二分查找的思想,分治的思想学生很容易理解,理解二分查找也不是难点,算法的实现需要给学生充足和时间和必要的帮助。
任务二汉诺塔问题,重点应落在对问题状态的描述及状态间的转移上。
在4.2中回顾了函数的定义及调用方式,为递归函数设计做了很好的铺垫。
教学目标1.运用合适的算法形成解决问题的方案。
2.了解算法设计中的分治思想,并运用二分查找解决实际问题。
3.体验递归算法,并结合具体问题开展编程实践。
教学重点、难点运用合适的算法形成解决问题的方案。
算法设计中的分治思想,并运用二分查找解决实际问题。
递归算法,并结合具体问题开展编程实践。
教学方法讲授法,演示法,任务引导法教学过程第一课时引入在数值计算中,我们更多考虑的是“数”,但计算应该是一个更广泛的领域。
计算的对象可以是自然界和人类社会的一-切事物。
更确切地说,计算的对象可以是某些信息,如数据、文字、语言、图形、知识、事物的运动过程及思维过程。
如果说数值计算主要探讨数学问题的话,那么非数值计算更多探讨“算法”问题。
数据是普遍存在的,甚至可以说对象即数据;对数据的分析、处理都属于计算的范畴。
选择--个合适的算法,设计出平实、易读、易懂的程序,正确、高效地解决实际需求,是计算的本质。
新课许多程序设计问题的解决,要依靠标准算法和现成的模型,更需要编程者开阔思路,提出一些新颖、巧妙的算法,或者设计出一些独特的数据结构来支撑和实现算法。
在解决非数值类计算问题时,一些基础的思维方式可以借鉴,如分治、递归、解析等。
本节我们将围绕“生活中的算法”项目,尝试用“算法的眼睛”看待生活,用“算法的思维”去解决实际问题。
本项目主要包含“巧翻字典”和“玩转‘汉诺塔’游戏”两个任务。
任务一巧翻字典活动统计查字典次数查汉字、查单词、查成语等查字典的活动,早已成为我们学习生活的一部分。
假设一本字典大约1000页,目标信息在第328页。
请在表4.3.1中记录你的翻页过程,和同学们比一比,看谁翻的次数最少。
有的同学翻得特别快,他们用了什么方法呢?原来看似普通的翻字典,不仅是一门技术,更是一种能力,是算法思想的体现。
分治策略分治的设计思想,是将一个难以直接解决的大问题,分割成一些较小的同类问题,各个击破,最终达到解决问题的目的。
二分查找实际上就是分治策略的一种典型运用。
二分查找二分查找又叫折半查找,该方法主要将数列有序排列,采用跳跃式的方式查找数据。
以递增数列为例,先以中点位置的元素作为比较查找的基本算对象,如果要找的元素值小于该中点元素,则将待查序列缩小为左半部分,否则为右半部分。
每一次比较后都可以将查找区间缩小一半。
二分查找是一种高效的查找方法。
它可以明显减少比较次数,提高查找效率。
在一个有n个元素的有序序列中,利用二分查找大约需要log2n次。
但是,二分法查找的前提条件是被查找的数据必须是有序的。
实践操作在翻页过程中借助两个书签,划定目标所属范围,然后翻到两个书签的中间位置。
每次目标区域都更新为原来的“二分之一”,当数据范围缩小到只有1个数的时候肯定能得到问题的解。
1000以内的页码,最多翻10次肯定能找到解。
有了翻字典的实际操作经验,我们来尝试完善下面的二分查找程序。
x=int(input("请输人要查找的数据:"))step=0 #记录查找次数flag1=1 #目标区域左边界flag2=1000 #目标区域右边界while( ): #区间数据范围小于1则结束循环mid= #中间值#查找次数加1if mid>x:#右边界前移elif mid<x:#左边界后移else:break #恰好找到目标数据,退出循环print("查找次数为:",step) #输出次数问题:如果输入的数据不在范围内,会出现什么结果呢?程序还需要在哪些地方进行完善?大家一起来试试吧。
算法研究涉及计算机科学和数学中令人着迷的话题。
面对海量数据的处理,算法选择得当,解决问题时便游刃有余;算法选择不当,则可能出现程序运行错误、运行时间长或占用空间大等问题。
所有这些都促使我们深入学习,感悟化繁为简的编程魅力。
第二课时任务二玩转“汉诺塔”游戏活动剖析问题, 设计游戏策略“汉诺塔”游戏源于一个古老的印度传说。
如图4.3.1所示,木板上有A 、B 、C 三根杆,A 杆上有若干木盘,规定每次移动一个木盘,且小的木盘只能叠在大的木盘上面。
请设计算法,用尽可能少的次数把所有木盘从A 杆全部移到C 杆上。
要使移动次数尽可能少,必须排除无效移动。
现在有8个木盘,不妨先以3个木盘为例,观察一下移动的过程。
请在图4.3.2中 记录木盘移动的过程。
递归递归是计算科学领域中一种重要的计算思维模式。
它既是一种抽象表达的手段,也是一种问题求解的重要方法。
直接或间接地调用自身的方法称为递归。
可以将递归简单类比为具有自相似性重复的事物。
图4.3.3所示 就是递归的一-种形象表示。
在数学与计算机领域中,递归函数是指用函数自身来定义该函数的方法。
如著名的斐波那契数列“1, 1, 2, 3, 5, 8,13,..”,以递归定义为⎩⎨⎧2)>(n 2)-F(n +1)-F(n 2)=n 1=1(n =F(n)或递推关系是递归的重要组成,而边界条件是递归的另一要素,它保证递归能在有限次的计算后得出结果,而不会产生无限循环的情况。
面对一个大规模复杂问题的求解,递归的基本思想是把规模较大的问题层层转化为规模较小的同类问题求解。
对递归而言,递推与回归,二者缺一-不可。
结合分治策略,递归也可用“分”“治” “合”三个字概括。
(1)分:将原问题分解成k 个子问题。
(2)治:对这k 个子问题分别求解。
如果子问题的规模仍然不够小,则将其再分解为k 个子问题,如此进行下去,直到问题足够小时,就很容易求出子问题的解。
(3)合:将求出的小规模问题的解合并为一个更大规模问题的解,自下而上逐步求出原问题的解。
实践操作移动3个木盘的方法是:根据木盘叠放规则,要使A杆上最大的木盘(记为x)移动到C 杆上(子问题1,如图4.3.2中的第4步) ,必须先把x上方的所有木盘移动到B杆上(子问题2,如图4.3.2中的前3步),然后再将B杆上所有的木盘移动到C杆上(子问题3,如图4.3.2中的后3步)。
3个木盘的移动问题成功解决了,就可以解决更多木盘的移动问题了。
将n个木盘从A 杆移动到C杆,需要借助中间的B杆。
只要超过一个木盘,在移动过程中,总会存在起始杆、过渡杆及目标杆的问题。
因此,定义函数时,用到了4个参数: hanoi(n,s,m,l), n表示需要移动的盘子数量,s表示盘子的起始杆,m表示中间过渡杆,l表示目标杆,如图4.3.4所示。
让我们根据图示一起完善程序吧。
def hanoi(n,s,m,t):#定义一个函数,将n个木盘从s借助m移到tif n==1: #当只有一个木盘时,直接从起始杆移动到目标杆print( )else:#将前n-1个木盘借助t从s移到mhanoi( ,s, , )print( )#将最下面的木盘从s移到t#将m上的n-1个木盘借助s移到thanoi( , , ,t )#主程序n=int(input( '请输人木盘的个数: '))#调用函数,将n个木盘从A借助B移动到Chanoi(n,'A','B','Cc)运行程序,输入3个木盘,记录程序运行结果。
将一个难以直接解决的大问题,分割成一些规模较小的同类问题,以便各个击破,分而治之,此为分治。
分治与递归就像一-对孪生兄弟,经常同时应用在算法设计中,并由此产生了许多高效的算法。
练习1.结合4.2的知识,计算“汉诺塔”游戏移动的次数。
2.尝试用二分法求解x3- x2+x- 1=0。
操作提示:令f(x)=x3-x2+x- 1,针对有解的单调区间(a,b),取xo=(a+b)/2:若f(a)*f(x0)<0,则f(x)在(a, x)内有解;若f(xo)*f(b)<0,则f(x)在(Xo, b)内有解;若|f(x0)|< 10^*,则x为方程的解。
拓展知识迭代与递归的关系迭代算法与递归算法都需要重复执行某些代码,两者既有区别又有着密切的联系。
迭代是重复反馈过程的活动,其目的通常是逼近所需目标或结果。
递归是重复调用函数自身。
递归中,遇到满足终止条件的情况时逐层返回。
迭代则通常使用计数器结束循环。
迭代程序可以转换成等价的递归程序。
以上--节中计算斐波那契数列第n项的值为例,程序间的转换如表4.3.2所示。
拓展训练项目:编程之美活动:比比谁更快活动描述:选取两种或三种排序的算法,对比它们的效率,分析优缺点。
1.选题理由排序是计算机内经常进行的一种操作,其目的是将一组“无序”的记录序列调整为“有序”的记录序列。