相关博客目录
C++程序设计基础学习笔记:(1)初识C++语言:从认识变量和常量开始,数据的表示
C++程序设计基础学习笔记:(2)计算:从数据运算开始,数据简单运算
C++程序设计基础学习笔记:(3)分支结构:无处不在的抉择
C++程序设计基础学习笔记:(4)循环结构:周而复始,求同存异
C++程序设计基础学习笔记:(5)数组:实现算法的利器
C++程序设计基础学习笔记:(6)指针:所向披靡的“金箍棒” 魂
C++程序设计基础学习笔记:(7)函数:面向过程的基础
C++程序设计基础学习笔记:(8)文件:让数据流动起来
C++程序设计基础学习笔记:(9)以人为本:用类与对象诠释现实世界
C++程序设计基础学习笔记:(10)从生物遗传说起,取其精华——继承与多态
第4章 循环结构:周而复始,求同存异
算法描述的三种基本结构
4.1 简单循环结构:从计算一个圆的面积到多个圆的面积看循环结构
循环定义及要点
循环就是反复持续地执行某些动作,有两部分组成
循环体:归纳出哪些操作需要反复执行
循环控制条件:这些操作在什么情况下反复执行
随着循环不断地执行,必须有一种方法使得循环控制条件最终不成立,循环可以退出,否则,就构成死循环,程序永远无法终止。
实现循环的语句
While 循环语句格式
for循环语句的格式
表达式1: 对表达式2中的循环控制变量赋初值变量
表达式2: 循环控制逻辑表达式: 循环控制变量
表达式3: 改变表达式2中的循环控制变量的值
for语句与while语句比较
(直到型循环)do-while 语句格式
循环语句应用的一般原则
循环算法的设计
目标:代码复用
使用相同代码完成每一次循环
4.2循环结构程序设计:整数位数拆分
4.3 循环结构程序设计:从Fibonacci数列看递推法
递推法
指从问题的已知条件出发,依据某种递推关系,逐次推出所要求的各中间结果及最后结果
递推初始条件确定
问题本身已经给定;
通过对问题的分析与化简后确定;
递推方向
顺推法
从已知初始条件出发,通过递推关系逐步推算出要解决的问题的结果的方法。如求Fibonacii数列
倒推法
在不知初始值的情况下,经某种递推关系而获知了问题的解或目标,从这个解或目标出发,采用倒推手段,一步步地倒推到这个问题的初始情况。如猴子吃桃
实现递推的步骤
(1)确定递推变量
要根据问题的具体实际,设置递推变量。
(2)建立递推关系
递推关系是指如何从变量的前一些值推出其下一个值,或从变量的后一些值推出其上一个值的公式(或关系)。
(3)确定初始(边界)条件
对所确定的递推变量,要根据问题最简单情形的数据确定递推变量的初始(边界)值,这是递推的基础。
(4)对递推过程进行控制
递推过程不能无休止地重复执行下去。递推过程在什么时候结束,满足什么条件结束,这是编写递推算法必须考虑的问题。
4.4 循环结构程序设计–从判断素数看循环语句中的break
break & continue
break & continue流程图
4.5 嵌套循环:再从计算多个圆面积看内外循环的关系
循环的嵌套
在一个循环结构中又完整地包含着另一个循环结构称为循环嵌套。嵌套层次一般不超过3层,以保证可读性。
循环的嵌套设计原则
1.外层循环前相关变量的初始化;外层判断循环条件,满足进入外层循环体
2.内层循环前相关变量的初始化;内层判断循环条件
3.内层循环体执行
4.内层循环变量累加,回到2执行,直到不满足内层条件
5.外层循环变量累加,回到1执行,直到不满足外层循环条件,彻底退出循环
4.6 嵌套循环:从打印九九乘法表看内外循环的关系
嵌套循环的常用设计方法
4.7 循环结构程序设计–从百钱买百鸡问题看穷举法
用穷举法解决问题
计算机的特点之一就是运算速度快、善于重复做一件事情,“穷举法”正是基于这一特点的最古老的算法。
穷举法基本思想是,根据问题中的“约束条件”,将所有可能的解一一列举出来,并逐个验证是否符合“约束条件”,找出其中符合要求的解
穷举法适合求解的问题是:可能的答案是有限个且答案是可知的,但又难以用解析法描述。这种算法通常用循环结构来完成。
穷举法的一般模式
列出问题的可能范围,一般用循环结构来实现,穷举一般使用for语句
将要穷举的变量i 作为循环控制变量,i∈ [a,b]
探究、挖掘出问题解的约束条件
根据约束条件优化算法,尽可能地缩小穷举范围,减少穷举次数,降低算法的时间和空间复杂度。
4.8 程序调试方法:单步调试法
程序调试
单步调试实际操作