算法与程序·程序框图

2024-07-14

算法与程序·程序框图(精选6篇)

算法与程序·程序框图 第1篇

随着现代信息技术的飞速发展, 算法在科学技术、社会发展中发挥着越来越大的作用, 并日益融入社会生活的许多方面, 算法思想已经成为现代人应具备的一种数学素养.下面通过对解决具体问题过程与步骤的分析, 理解程序框图的三种基本逻辑结构, 体会算法的程序化思想.

例 下列是为计算22+42+62+…+1002而绘制的算法流程图, 根据流程图回答:

(1) 其中正确的流程图有哪几个?错误的流程图有哪几个?错误的要指出错在哪里.

(2) 错误的流程图中, 按该流程图所蕴含的算法, 能执行到底吗?若能执行到底, 最后输出的结果是什么?

解析: (1) 正确的流程图只有图4.

①图1有三处错误.

第一处错误:第二个图框中i=42, 应该是i=4, 因为本流程图中的计数变量是i, 不是i2.在22, 42, …, 1002中, 指数都是2, 而底数2, 4, 6, 8, …, 100是变化的, 但前后两项的底数相差2, 因此计数变量是顺加2.

第二处错误:第三个图框中的内容错误, 累加的是i2而不是i, 故应改为p=p+i2.

第三处错误:第四个图框中的内容, 其中的指令i=i+1, 应改为i=i+2, 原因是底数前后两项相差2.

②图2所示的流程图中共有四处错误.

第一处错误:流程线没有箭头显示程序的执行顺序.

第二处错误:第三个图框中的内容p=p+i错, 应改为p=p+i2.

第三处错误:判断框的流程线上没有标明“是”或“否”, 应在向下的流线上注明“是”, 在向右的流线上标注“否”.

第四处错误:在第三个图框和判断过程中漏掉了循环体中起主要作用的框图, 内容即为i=i+2, 使程序无法退出循环, 应在第三个图框和判断框之间添加图框i=i+2.

③图3所示的流程图中有一处错误, 即判断框中的内容错误, 应将框内的内容“i<100”改为“i≤100”; 或改为“i>100”且判断框下面的流程线上标注的“是”和“否”互换.

(2) ①图1虽然能进行到底, 但执行的结果不是所期望的结果.按照这个流程图最终输出的结果是p=22+42+ (42+1) + (42+2) + (42+84) .

②图2流程图无法进行到底.

③图3虽然能使程序进行到底, 但最终输出的结果不是预期的结果而是22+42+62+…+982, 少了1002.

评析:应用循环结构解决问题时, 应特别注意累加变量和计数变量的初始值, 及计数变量到底是什么?它递加的值是多大?还要特别注意判断框中计数变量的取值限制, 不等号含等号还是不含等号等, 它们的含义是不同的.另外, 不要漏掉流程线的箭头以及与判断相连的流线上的标志“是”或“否”.

算法与程序·程序框图 第2篇

上册

随话说“老师是辛勤的园丁”,对于同学们每天学习的新课时,都需要老师提前备好课,做好教案设计,下文为大家推荐了高二数学算法与程序框图教学计划,供大家参考。教学要求:掌握程序框图的概念;会用通用的图形符号表示算法,掌握算法的三个基本逻辑结构.掌握画程序框图的基本规则,能正确画出程序框图.通过模仿、操作、探索,经历通过设计程序框图表达解决问题的过程;学会灵活、正确地画程序框图.教学重点:程序框图的基本概念、基本图形符号和3种基本逻辑结构.教学难点:综合运用框图知识正确地画出程序框图 教学过程:

一、复习准备:

1.写出算法:给定一个正整数n,判定n是否偶数.2.用二分法设计一个求方程的近似根的算法.二、讲授新课:

1.教学程序框图的认识:

① 讨论:如何形象直观的表示算法? →图形方法.第 1 页 教师给出一个流程图(上面1题),学生说说理解的算法步骤.② 定义程序框图:程序框图又称流程图,是一种用规定的图形、指向线及文字说明来准确、直观地表示算法的图形.③基本的程序框和它们各自表示的功能: 程序框 名称 功能 终端框(起止框)表示一个算法的起始和结束 输入、输出框

表示一个算法输入和输出的信息 处理(执行)框 赋值、计算 判断框

判断一个条件是否成立 流程线 连接程序框

④ 阅读教材P5的程序框图.→ 讨论:输入35后,框图的运行流程,讨论:最大的I值.2.教学算法的基本逻辑结构:

① 讨论:P5的程序框图,感觉上可以如何大致分块?流程再

第 2 页 现出一些什么结构特征? → 教师指出:顺序结构、条件结构、循环结构.② 试用一般的框图表示三种逻辑结构.(见下图)③ 出示例3:已知一个三角形的三边分别为4,5,6,利用海伦公式设计一个算法,求出它的面积,并画出算法的程序框图.(学生用自然语言表示算法→师生共写程序框图→讨论:结构特征)④ 出示例4:任意给定3个正实数,设计一个算法,判断分别以这3个数为三边边长的三角形是否存在.画出这个算法的程序框图.(学生分析算法→写出程序框图→试验结果→讨论结构)⑤ 出示例5:设计一个计算1+2+3+...+1000的值的算法,并画出程序框图.(学生分析算法→写出程序框图→给出另一种循环结构的框图→对比两种循环结构)3.小结:程序框图的基本知识;三种基本逻辑结构;画程序框图要注意:流程线的前头;判断框后边的流程线应根据情况标注“是”或“否”;循环结构中要设计合理的计数或累加变量等.三、巩固练习:

1.练习:把复习准备题②的算法写成框图.四、课后作业

第 3 页 作业:P12 A组 1、2题.小编为大家提供的高二数学算法与程序框图教学计划大家仔细阅读了吗?最后祝同学们学习进步。

算法与程序框图的基本结构 第3篇

1.经典算法类

例1 一个人带着三只狼和三只羚羊过河,只有一条船,同船可容纳一个人和两只动物,没有人在的时候,如果狼的数量不少于羚羊的数量就会吃羚羊.该人如何将动物转移过河?请设计算法.

解析 任何动物同船不用考虑动物的争斗但需考虑承载的数量,还应考虑到两岸的动物都得保证狼的数量要小于羚羊的数量,故在算法的构造过程中尽可能保证船里面有狼,这样才能使得两岸的羚羊数量占到优势,具体算法如下:

第一步,人带两只狼过河,自己返回.

第二步,人带一只狼过河,自己返回.

第三步,人带两只羚羊过河,并带两只狼返回.

第四步,人带一只羊过河,自己返回.

第五步,人带两只狼过河.

点拨 算法是解决某一类问题的精确描述,有些问题使用形式化、程序化的刻画是最恰当的.这就要求我们在写算法时应精练、清晰地表达,要善于分析任何可能出现的情况,体现出思维的严密性和完整性.

2.顺序结构类

例2 画出从5个不同的数中找出最大数的算法的程序框图.

解析 记这五个数是[a1,a2,a3,a4,a5,]框图如下.

点拨 (1)各步中的[b]可能在每一步中都不变,也可能在每一步中都变,但最后输出的[b]是这5个不同的数中最大的数.(2)设计算法的目的是将它作为指令交给计算机去完成,当解决一类问题的算法一旦确定,那么它的执行顺序也就确定了.因而,各步只能一步接一步地执行,不能跳跃,也不能交换.

3.条件结构类

例3 设计算法判断一元二次方程[ax2+bx+][c=0]是否有实数根,并画出相应的程序框图.

解析 算法步骤:

第一步,输入一元二次方程的系数:[a,b,c].

第二步,计算△[=b2-4ac]的值.

第三步,判断△≥0是否成立. 若成立,输出“方程有实根”;否则输出“方程无实根”.

结束算法.

程序框图:

点拨 根据一元二次方程的意义,需要计算判别式△[=b2-4ac]的值.再分成两种情况处理:(1)当△≥0时,一元二次方程有实数根;(2)当△<0时,一元二次方程无实数根.该问题实际上是一个分类讨论问题,根据一元二次方程系数的不同情况,最后结果就不同.因而当给出一个一元二次方程时,必须先确定判别式的值,然后再用判别式的值的取值情况确定方程是否有解.该例仅用顺序结构是办不到的,要对判别式的值进行判断,需要用到条件结构.

例4 设计算法,求[ax+b=0]的解,并画出程序框图.

解析 对于方程[ax+b=0],应该分情况讨论方程的解. 对一次项系数[a]和常数项[b]的取值情况进行分类,分类如下:

(1)当[a≠0]时,方程有惟一的实数解[-ba];

(2)当[a=0,b=0]时,方程的解为全体实数;

(3)当[a=0,b≠0]时,方程无解.

联想数学中的分类讨论的处理方式,可得如下算法步骤:

第一步,判断[a]是否不为零.若成立,输出结果“解为[-ba]”.

第二步,判断[a=0,b=0]是否同时成立.若成立,输出结果“解集为R”.

第三步,判断[a=0,b≠0]是否同时成立.若成立,输出结果“方程无解”.

点拨 条件结构嵌套与条件结构叠加的区别是:(1)条件结构叠加,程序执行时需依次对“条件1”“条件2”“条件3”……进行判断,只有遇到能满足的条件才执行该条件对应的操作.(2)条件结构嵌套所涉及的“条件2”“条件3”……是在前面所有条件依次一个一个的满足“分支条件成立”的情况下才能执行此操作,是多个条件同时成立的叠加和复合.

4.循环结构类

例5 设计一个算法,求1+2+4+…+249的值,并画出程序框图.

解析 算法步骤:

第一步,[sum=0].

第二步,[i=0].

第三步,[sum=sum+2i].

第四步,[i=i+1].

第五步:判断[i]是否大于49,若成立,则输出[sum],结束;否则返回第三步重新执行.

程序框图:

点拨 如果算法涉及的运算进行了多次重复的操作,且先后参与运算的数之间有相同的规律,就可引入变量循环参与运算(我们称之为循环变量),应用于循环结构.在循环结构中,要注意根据条件设计合理的计数变量、累加和累乘变量及其个数等,特别要求条件的表述要恰当、精确.累加变量的初始值一般取0,而累乘变量的初始值一般取1.

1.在画程序框图时,如果一个框图要分开画,要在断开处画上( )

A.流程线 B.注释框

C.判断框 D.连接点

2.下图给出的是计算[12+14+16+???+1100]的值的一个程序框图,其中判断框内应填入的条件是( )

A.[i]>100 B.[i]<=100

C.[i]>50 D.[i]<=50

3.设[y]为年份,按照历法的规定,如果[y]为闰年,那么或者[y]能被4整除不能被100整除,或者[y]能被400整除. 对于给定的年份[y],要确定索是否为闰年,如何设计算法,画出其流程图.

4.若有A、B、C三个不同大小的数字,你能设计一个算法,找出其中的最大值吗?试给出解决问题的一种算法,并画出流程图.

4.应该先两两比较,算法和流程图如下:

[S1]输入[A,B,C];

[S2]如果[A>B],那么转[S3],否则转[S4];

[S3]如果[A>C],那么输出[A],转[S5],否则输出[C],转[S5];

[S4]如果[B>C],那么输出[B],转[S5],否则输出[C];

算法与程序设计 第4篇

作者:赵濮民

摘要:研究性学习是教育科研领域中一个崭新的课题。信息技术教学作为以培养创新精神、研究能力和实践能力为目标取向的必修课程,它强调让学生通过研究性学习,提出问题,收集材料,对研究性课题进行探索、分析、研究,最后基于问题解决模式,在实践操作中培养学生科学的态度和价值观以及创新精神、创新思维、创造能力,并学会解决生活中与信息技术学习有关的实际问题。职业学校的学生,不仅应具有独立接受知识的能力,更应具有独立探索知识的能力,由“研究性学习”补充原有的“接受式学习”,使学习方式更趋完善,只有当这两种学习方式结合起来,优势互补,才能使基础教育适应时代对人才培养的要求。

关键词:程序设计;研究性学习;求真;求全;求变;求新;优势互补

《算法与程序设计》是职业学校信息技术教学中的一个重点,也是难点。传统的程序设计教学以老师讲授型为主,由于算法与程序设计的内容逻辑性强,普遍认为在程序设计教学中难以实施研究性学习。

研究性学习是以“培养学生具有永不满足、追求卓越的态度,培养学生发现问题、提出问题、从而解决问题的能力”为基本目标,以学生从学习中获得作品设计与制作方法的困惑为方向,以在提出问题和解决问题的全过程中学习到算法与程序设计为学习方法的课程。经过反复研究,我们认为研究性学习可以应用于程序设计教学中。实施研究性学习的关键是要确定一个目标,要鼓励学生主动地发现问题,并且通过探究或实践活动去试图解决问题。在课题研究的过程中采用分组交流讨论、查阅资料、协作探究、归纳总结等方式,一步步引领学生深刻掌握算法与程序设计的精髓。

一、通过研究性学习,重构算法知识体系,要求真 研究性学习是学生在老师的指导下,结合真实生活,选定主题,然后搜集相关材料,对材料进行归纳、加工处理、分析、总结,得到相应结论的学习活动。在《算法与程序设计》教学中,根据教学内容,经过反复研究,确定了研究主题《搜索算法的应用研究》和《动态规划算法的解题应用研究》,并根据学生的自愿报名成立了两个研究小组。然后各小组根据自己研究的算法,重新整理相应的知识,对知识进行认知、归纳、总结。如《搜索算法的应用研究》小组,对搜索算法从以下几方面进行整理:

1、搜索算法的算法思想、分类;

2、深度优先搜索的算法思想与算法结构;

3、广度优先搜索的算法思想与算法结构;

4、深度优先搜索的优先策略;

5、广度优先搜索的优化策略;

6、深度优先搜索与广度优先搜索的异同。学生通过对搜索算法知识进行整理、分类、小结,加深了对搜索算法的理性理解与感性认知。

二、通过研究性学习,同学之间取长补短,要求全

每个学生都有所长,也有所短,研究性学习一个重要的特点就是:分工合作,共同讨论,共同提高,使参与的学生全面发展。我们的“搜索算法的应用研究”小组共有五个成员,根椐学生的特点、特长,对他们进行分工,每位学生研究上述其中一个问题,然后整个小组一起讨论,每位学生介绍自己的研究情况、研究成果,然后其他同学进行补充,发表自己的见解,这样每个同学都使自己的研究内容得到补充,同时也学习到了其他同学研究方面的知识,可以取长补短,共同提高,得到全面发展。

三、通过研究性学习,总结算法的应用规律,要求变

研究性学习的目的,是要求学生搜集与主题有关的资料,归纳整理相关资料,根据相关材料和知识,对主题进行研究,提出自己的观点或结论。我们在程序设计教学中进行算法专题研究也是这样,除要求学生归纳、整理专题算法知识外,还要总结出算法的应用规律、应用算法解题的步骤和算法的框架,能根据实际情况,随机应变。如在“动态规划的应用研究”中,学生总结出:动规划是解符合“无后效性原则”的最优问题的一种算法思想;用动态规划解题的一般步骤是:(1)判断题目是否为求最优问题,是否符合“无后效性原则”;(2)确定如果划分阶段;(3)确定每个阶段有几种状态;(4)找出状态转移方程和边界条件;(5)用算法语言实现算法过程。又如在“搜索算法的应用研究”中,研究小组的同学总结出:(1)广度优先搜索算法通常应用于解最少步数问题,而深度优先搜索算法则通常用来解所有路径问题;(2)深度优先搜索和广度优先搜索都是搜索算法,前者时间复杂度较大,而后者则占用的内存较大;(3)深度优先搜索在实现时用递归或用堆栈来实现,而广度优先搜索是用队列来实现,实现两种算法所用的数据结构不同;(4)深度优先搜索和广度优先搜索都是搜索算法,但两者的算法结构有较大的不同。学生通过自己对算法应用规律的总结,对算法的应用得到升华,进一步提高算法的应用能力和程序设计能力。

四、通过研究性学习,提高分析、归纳和综合能力,要求新

对算法的专题研究,不仅要对算法理论进行总结,算法应用的研究也是很重要的一方面,通过算法的解题应用,既提高了学生分析问题的能力,也加深了学生对算法的理解,提高了学生的算法应用能力,进而得到对学生创新能力的培养。另外,我们在算法研究过程中,要求学生透切理解算法内容,用算法语言准确描述算法,通过这种途径,进一步加深学生对算法的理解,同时也提高了学生的算法表达能力和归纳、总结的能力。

通过对算法进行专题研究,可以进一步加深学生对算法知识的理解,也可以提高学生的算法应用能力和程序设计能力。实践告诉我们:在整个研究过程中要注意以下几个问题:

1、课题不宜太大。研究课题的确定是研究性学习实施过程中重要的一环,课题选择恰当与否,直接关系到整个课题研究的成败。在程序设计教学中进行研究性学习活动,选题要遵循下面的原则:(1)课题的范围不宜太大;(2)有一定的应用价值;(3)结合学生的实际。一个好的开始是成功的一半,在研究性学习活动中也是如此。

2、要理论研究与算法应用相结合。对算法的专题研究,算法应用是重点。在算法知识归纳总结的基础上,重点应研究算法应用的一般规律、算法结构、应用算法解题的一般步骤等。不应该只是对算法理论的空洞论述,否则效果不好、意义也不大。

3、充分发挥教师的引导作用、学生的主体作用。在算法研究活动中,应充分发挥教师的引导和指导作用,既不能放任自由,也不能包办代替,要充分发挥学生的主体作用。当学生遇到问题和困难时,老师应当引导和启发学生,让学生去探索和研究,而不是直接告诉学生答案,老师始终是学生的引导者,学生是真正的参与者,使学生通过算法研究,加深对算法的理解,提高算法应用能力和程序设计能力。

程序框图题型赏析 第5篇

一、求输入值

例1 给出如图所示的程序框图,若要使输入的[x]值与输出的[y]值相等,则这样的[x]值的个数是( )

A.1 B.2 C.3 D.4

[ 开始 ] [输入[x]] [x≤2?] [x≤5?] [输出y][ 结束 ] [是] [是][否][否]

解析 根据题意,本程序框图表示成分段函数,[y=x2,x≤2,2x-3,2<x≤5,1x, x>5,]由于输出的[x]值与[y]值相等,由[x2=x]解得[x=0]或[x=1],都满足[x≤2]. 由[x=2x-3]得[x=3],也满足[2<x≤5]. 由[1x=x]解得[x=±1],不在[x>5]内,舍去.可见满足条件的[x]值共三个.

答案 C

点拨 这类题目考查识图能力,利用框图表示的信息,把问题转化为函数问题解决.从程序框图中可以看出是条件结构,根据题意可知函数是分段函数模型.条件语句是处理条件分支逻辑结构的算法语句,就是说:算法逻辑结构中的条件结构一般是由算法语言中的条件语句来实现的.如“判断一个数的正负”“比较数之间的大小”“求分段函数的值”等,解决这些问题,常用条件语句.

二、求输出结果

例2 执行如图所示的程序框图,则输出的[k]的值为( )

[ 开始 ] [S<100?] [输出k][ 结束 ] [否] [是]

A. 4 B. 5 C. 6 D. 7

解析 第一次运行:[S=1,k=1];第二次运行:[S=3,k=2];第三次运行:[S=11,k=3];第四次运行:[S=11+211,k=4];第五次运行:否.输出[k=4].

答案 A

点拨 该题型常与循环结构相结合,解决此类问题的关键是把握程序框图所表达的内容,本题实质上是求和问题,属于直到型循环结构,应特别注意循环终止的条件.

三、判断框图的功能

例3 下图给出了一个算法流程图,该算法流程图的功能是( )

[ 开始 ] [输入[a,b,c]] [输出[a]][ 结束 ] [a>b?] [a>c?] [是][否][否][是]

A. 求[a,b,c]三数中的最大数

B. 求[a,b,c]三数中的最小数

C. 将[a,b,c]按从小到大排列

D. 将[a,b,c]按从大到小排列

解析 第一次经过判断框时,首先比较两数的大小,把小数赋给[a];然后比较[a]与[c],小数再赋给[a],所以最后赋出三数中的最小数.

答案 B

点拨 这类题型要仔细阅读框图,明确框图的运算过程,可采取渐进式或者特殊式进行阅读,再演绎.

四、补充判断条件

例4 下图给出的是计算[12+14+16+…+1100]值的一个程序框图,其中判断框中应该填的条件是 .

[ 开始 ] [输出S][ 结束 ] [否][是]

解析 [S=12+14+16+…+1100]共有50个数相加,第一次循环,输出[S=12],[I=2]. 第二次循环,输出[S=12+14],[I=4]. 由于需要循环50次,所以应该填写[I≤98]或[I<100]. 解答本题时防止出现[I≤49]或[I<50]的错误.

点拨 这类题目也是考查的热点,解决这类问题常常考查循环结构,看清楚是直到型循环结构还是当型循环,明确每次输出的结果,需要循环的次数,才能够准确地补充条件.

练习

1. 执行如图所示的程序框图.若输出[S=15], 则框图中①处可以填入( )

A.[n>4] B.[n>8] C.[n>16] D.[n<16]

[是][ 开始 ] [输出S][ 结束 ] [①] [否]

2. 在下图的程序框图中,输出的[S]的值为( )

[是][否] [ 开始 ] [i<1?] [输出S][ 结束 ]

A. 12 B. 14

高考程序框图题特点剖析 第6篇

算法实际上就是解决某一类问题的程序化方法,它通常以一系列明确有限的步骤的形式出现.算法的基本特征程序性、明确性和有限性.高中阶段,学习算法,主要在于体会算法思想. 高考对算法思想的考查往往结合程序框图、算法语句、算法案例或其他有关内容进行.

例1 (2014年湖北卷理13)设[a]是一个各位数字都不是0且没有重复数字的三位数.将组成[a]的3个数字按从小到大排成的三位数记为[I(a)],按从大到小排成的三位数记为[D(a)](例如[a=815],则[I(a)=158],[D(a)=851]). 阅读如图所示的程序框图,运行相应的程序,任意输入一个[a],输出的结果[b=] .

解析 输入[a=815],按照程序框图,运行相应的程序即可.

当[a=815]时,则[b=851-158=693≠815],从而进入循环,[a=693].

当[a=693]时,则[b=963-369=594≠693],从而继续循环,[a=594].

当[a=594]时,则[b=945-459=495≠594],从而继续循环,[a=495].

当[a=495]时,则[b=945-459=495=a],从而终止循环,故输出[b=495].

点拨 本题是一道开放性试题,输入的[a]任意的,但输出的[b]是确定的.既然输入的[a]是任意的,我们不妨选择题设所给的例子[a=815],按照程序框图,运行相应的程序即可得到[b=495].还可以选择[a=123]等. 本题的背景是“数字黑洞”问题,意蕴深厚,充满着数学的奇异美和统一美. 类似地,四位数的数字黑洞是6174.

考点2 程序框图

程序框图的题型主要有三类:计算输出结果、补充程序框图、计算输入数值.因为循环结构程序框图中必然包含顺序结构和条件结构,所以循环结构是考查的重点和热点.处理循环结构的程序框图时,循环次数容易出错,要特别注意程序终止的条件,即何时退出循环.必要时可以从开始和结尾处检验算法是否正确.循环结构中往往出现多个变量,在执行算法框图时,必须严格按照流程线箭头的方向来执行算法步骤,千万不要将循环体中算法的先后次序搞错.

例2 (2014年湖北卷文14)阅读如图所示的程序框图,运行相应的程序,若输入[n]的值为9,则输出[S]的值为 .

解析 第一次运行时,

[S=0+21+1=21+1],[k=1+1].

第二次运行时,

[S=(21+1)+(22+2)],[k=2+1].

……

所以框图运算的是

[S=(21+1)+(22+2)+…+(29+9)=1067].

点拨 程序框图含有循环结构且循环次数比较多时,不要盲目地重复运算,否则运算量会较大甚至会算不出来.可以先循环几次,再找出规律,规律往往涉及数列求和.这样,理解了循环结构的含义,往往会简化计算,起到事半功倍的效果.

考点3 算法语句

了解几种基本算法语句——输入语句、输出语句、赋值语句、条件语句、循环语句的含义.其中容易出错的是赋值语句.赋值语句的一般格式:变量=表达式.顾名思义,赋值语句就是将表达式所代表的值赋给变量.赋值语句中的“=”称作赋值号.执行赋值语句时,先计算“=”右边表达式的值,然后把这个值赋给“=”左边的变量.赋值号的左右两边不能对换,如“[A=B]”“[B=A]”的含义运行结果是不同的.

例3 (2013年陕西卷文4理3)根据下列算法语句,当输入[x]为60时,输出[y]的值为( )

[输入[x]:

IF [x<=50] THEN

[y=0.5?x]

ELSE

[y=25+0.6?(x-50)]

END IF

输出[y]]

A. 25 B. 30

C. 31 D. 61

解析 当[x=60]时,[y=25+0.6(60-50)][=31].

答案 C

点拨 本题实际上是一个分段函数求值问题.分段函数问题可以通过条件语句来实现.

考点4 算法案例

辗转相除法与更相减损术都是求两个正整数的最大公约数的方法. 二者的算理却是相似的,有异曲同工之妙.主要区别在于辗转相除法进行的是除法运算,即辗转相除;而更相减损术进行的是减法运算,但实质都是一个不断递归的过程.

秦九韶算法是求一元多项式值的一种方法. 秦九韶算法的特点在于把求一个[n]次多项式的值转化为求[n]个一次多项式的值. 通过这种转化,把运算的次数由至多[n(n+1)2]次乘法运算和[n]次加法运算,减少为至多[n]次乘法运算和[n]次加法运算,大大提高了运算效率.

例4 已知[n]次多项式[Pn(x)=anxn+an-1xn-1+][…+a1x+a0].如果在一种算法中,计算[xk0]([k=2,3,4,…,n])的值需要[k-1]次乘法,计算[P3(x0)]的值共需要9次运算(6次乘法,3次加法),那么计算[Pn(x0)]的值共需要 次运算.

下面给出一种减少运算次数的算法:[P0(x)=a0],[Pk+1(x)=xPk(x)+ak+1]([k=0,1,2,…,n-1]).利用该算法,计算[P3(x0)]的值共需要6次运算,计算[Pn(x0)]的值共需要 次运算.

解析 第一种算法中,计算[Pn(x0)]的值共需要[n(n+1)2]次乘法运算和[n]次加法运算,故总运算次数为[n(n+3)2].第二种算法中,计算[Pn(x0)]的值共需要[n]次乘法运算和[n]次加法运算,故总运算次数为[2n].

点拨 第一种算法为直接算法,其优点是简单、易懂,缺点是运算次数太多,运算效率不高.第二种算法是秦九韶算法,其特点是把求一个[n]次多项式的值转化为求[n]个一次多项式的值,避免了对自变量[x]单独作幂的运算,而与系数一起逐步增长幂次,从而减少运算次数,提高运算效率.

上一篇:多维服务下一篇:电视摄像构图的艺术性