收藏 分享(赏)

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

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

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

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

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

4、: 枚举法,【例6】若一个三位数x=100a+10b+c(a、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一般称为递推公

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

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

9、2,循环变量i的计数是逐次减少,即i=i-1。,【例3】求任意两个自然数的最大公约数(辗转相除法),辗转相除法是一种求两个自然数的最大公约数的方法: 假设对于任意两个自然数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。 输出:最后的除数的值。,

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

当前位置:首页 > 生活休闲 > 社会民生

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报