循环结构(嵌套与枚举法解析法递推法).ppt

上传人:小飞机 文档编号:5975580 上传时间:2023-09-10 格式:PPT 页数:26 大小:296.50KB
返回 下载 相关 举报
循环结构(嵌套与枚举法解析法递推法).ppt_第1页
第1页 / 共26页
循环结构(嵌套与枚举法解析法递推法).ppt_第2页
第2页 / 共26页
循环结构(嵌套与枚举法解析法递推法).ppt_第3页
第3页 / 共26页
循环结构(嵌套与枚举法解析法递推法).ppt_第4页
第4页 / 共26页
循环结构(嵌套与枚举法解析法递推法).ppt_第5页
第5页 / 共26页
点击查看更多>>
资源描述

《循环结构(嵌套与枚举法解析法递推法).ppt》由会员分享,可在线阅读,更多相关《循环结构(嵌套与枚举法解析法递推法).ppt(26页珍藏版)》请在三一办公上搜索。

1、循环结构中的嵌套,【例1】输入某次考试成绩mark,统计100分人数good。(输入-1表示结束),分析问题:使用标志法:结束标志为mark=-1;所以在循环前先输入分数mark。循环体:条件mark=100成立,人数good计数,因此要用单分支结构描述,判断结束,再输入下一个分数mark。循环条件:mark-1说明:循环体可以是顺序的,但也可以是分支的(嵌套分支),同时也能是循环的(嵌套循环),即若循环体本身是循环就称为循环的嵌套。设计算法:先用自然语言描述,再画出流程图,注意:检查流程图的规范性。编写程序:(略)运行程序:上机调试与维护(略),例举 检验,【例3】实际应用:最值问题 输入2

2、0个数,求其中最大值max和最小值min。打擂台法,【练2】输入n个数,统计正数的个数nz和非正数的个数nfz。(n的值由键盘输入)分析问题:结束条件是什么?首先判断结束循环使用计数法还是标志法。设计算法:请画出流程图。循环体内嵌套什么结构?编写程序:(略)运行程序:上机调试与维护(略),例举 检验,【例4】求1-1000中,能被3整除的数。【例5】找出1-1000中所有能被7和11整除的数。,例举 检验,基本算法 一:枚举法,基本算法 二:解析法,基本算法 三:递推法,如循环结构中的嵌套满足下列概念则称为枚举法 根据所需解决问题的条件,把该问题所有可能的解,一一列举出来,并逐个检验出问题真正

3、解的方法。枚举法也称为穷举法。枚:一个一个 举:例举 在列举出所有可能的解时,既不能遗漏也不应重复。枚举算法的关键步骤及注意点:列举,用循环结构来实现,要注意循环变量、初值、终值和递增值的设置。检验是否符合问题的要求,用分支结构实现,不同检验结果不同处理方法。注意点:循环变量与判断对象是否是同一个变量;一般情况下没有输入;输出经常是在判断的一个分支中实现的。有些复杂问题一时无法直接找到求解公式或数学模型,则用枚举法体现其优势,非常高的准确性和全面性.但也有缺点:效率不高,是以消耗时间为代价的.枚举法的结构特征:列举 检验,基本算法 一:枚举法,【例6】若一个三位数x=100a+10b+c(a、

4、b、c都是个位数),满足a3+b3+c3=x,则x称为水仙花数。找出所有的水仙花数。,例举 检验,【例7】一张单据上有一个5位数的编号,万位数是1,千位数是4,百位数是7,个位数是8,十位数已经模糊不清,只知道该5位数是57或67的倍数,找出所有满足这些条件的5位数并输出。,例举 检验,【例8】百鸡百钱问题:公鸡每只5元,母鸡每只3元,小鸡1元3只,现在用100元钱买100只鸡,求公鸡、母鸡、小鸡各买几只?(提示:是利用枚举法解决实际问题的例子。本例出现了双重循环,即循环嵌套,同时体现了计算机解决问题方法与数学方法的区别),例举 检验,解析法:根据题目中给出的已知条件,找出已知条件与结果之间关

5、系的数学表达式,并通过表达式的计算来实现问题求解的方法。解析算法的关键:寻找正确的数学表达式解析算法的结构特征:没有特定!可能是顺序结构,也可能是分支或循环结构,甚至是几种结构的组合,完全取决于问题本身.,基本算法 二:解析法,【例1】输入直角三角形的两个直角边的边长值a和b,计算出斜边的边长值c。,【例2】输入三角形边长a,b,c,求三角形面积s。,【例3】求两个并联电阻的值,公式为:,【例4】一元二次方程ax2+bx+c=0(a0)的系数a、b、c,求方程的解。,递推法:从已知的初始条件出发,依据某种递推关系,逐次推出所要求的各中间结果及最后结果的算法。初始条件一般是问题本身已经给定,或者

6、是通过对问题的分析与化简后确定的。,基本算法 三:递推法,【例1】求斐波那契(Fibonacci)数列的第n个数据项,n由键盘输入。,可以用兔子繁殖的实例来说明斐波那契数列:假设兔子出生后两个月就能每月生一对小兔子,如果1月份出生了一对小兔子,那么每个月兔子数就是一个斐波那契数列,规律:每个月的兔子数等于上个月的兔子数加上两个月前的兔子数。,规律的数学表达:Fn=Fn-1+Fn-2(该数列的各项间的关系,用Fn表示斐波那契数列的第n项)但这里,n 3,F1=1,F2=1。Fn=Fn-1+Fn-2一般称为递推公式。处理:第一项和第二项分别为1。第三项起,用递推公式计算各项的值,直至第n项为止。由

7、于中间各项只是为了计算后面的项,因此可以轮换赋值。输出:第n项的值。,【例1】求斐波那契(Fibonacci)数列的第n个数据项,n由键盘输入。,分析问题:,【例1】求斐波那契数列的第n个数据项,n由键盘输入。,设计算法:,编写程序(略)运行和调试(略),【例2】猴子吃桃子问题:一只猴子采集了很多桃子。第一天吃了其中的一半,然后忍不住又吃了一个;第二天吃了剩下桃子的一半,然后忍不住又吃了一个;以后每天都这样,即吃了剩下桃子的一半,再多吃一个,到第十天时就只剩下一个桃子了。问第一天,猴子共采集了多少桃子?,【例2】猴子吃桃子问题:一只猴子采集了很多桃子。第一天吃了其中的一半,然后忍不住又吃了一个

8、;第二天吃了剩下桃子的一半,然后忍不住又吃了一个;以后每天都这样,即吃了剩下桃子的一半,再多吃一个,到第十天时就只剩下一个桃子了。问第一天,猴子共采集了多少桃子?,【例2】是倒推的递推法。分析问题:规律:每天的桃子数是前一天桃子数的一半减,那么,前一天的桃子数是后一天桃子数加的倍。规律的数学表达:如果用用Ai表示第i天的桃子数,则后一天的桃子数Ai+1Ai/2-1,前一天的桃子数Ai-1(Ai+1)*2。由于本例是从第九天开始,往前逐天计算,直到第一天,因此采用的是递推公式:Ai-1(Ai+1)*2,循环变量i的计数是逐次减少,即i=i-1。,【例3】求任意两个自然数的最大公约数(辗转相除法)

9、,辗转相除法是一种求两个自然数的最大公约数的方法:假设对于任意两个自然数a,b,当ab时,a=q*b+r。其中,q是a除以b后得到的部分商,r是a除以b后得到的余数。那么,当r等于0时,b就是a,b的最大公约数;否则,a,b的最大公约数就等于b、r的最大公约数,这是因为a 与b的最大公约数一定是b与r的最大公约数。从而可以将b作为新的除式中的a,r作为新的除式中的b,这样反复求约数,直至r等于0,这时的b就是原先的a和b的最大公约数。,例如:a=144,b=46。,432和138的最大公约数是6。,【例3】求任意两个自然数的最大公约数(辗转相除法),分析问题:输入:输入两个自然数a,b的值。处理:求a除以b的余数r。当r不等于0时,用b作为新的被除数a,r作为新的除数b重复上述过程,直至r为0。输出:最后的除数的值。,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号