while循环
▪ 在循环刚开始时,会计算一次“布尔表达式”的值,若条件为真,执行循环体。而对于后
来每一次额外的循环,都会在开始前重新计算一次。
▪ 语句中应有使循环趋向于结束的语句,否则会出现无限循环–––"死"循环。
循环结构都由如下四个结构组成:
初始化、条件判断、循环体、迭代
![](https://i-blog.csdnimg.cn/blog_migrate/845a6ff94e4f366ad7551097085264c7.png)
do-while循环
▪ do-while:
– 先执行,后判断。
▪ while:
– 先判断,后执行。
While
和
dowhile
的区别:
Dowhile
总是保证循环体会被至少执
行一次!这是他们的主要差别
![](https://i-blog.csdnimg.cn/blog_migrate/87e036f7b6faa6938b5bc7953ca7ad64.png)
for循环
▪ for循环语句是支持迭代的一种通用结构,是最有效、最灵活的循环结构
▪ 语法形式
▪ for (初始表达式;布尔表达式;步进) {
循环体;
▪ }
▪ 注意事项
– for循环在执行条件测试后,先执行程序部分,再执行步进。
– 在for语句的初始化部分声明的变量,其作用域为整个for循环体
– “初始化”和“循环条件表达式”部分可以使用逗号来执行多个操作
– 如果三个部分都为空语句(分号;能省),相当于一个无限循环
![](https://i-blog.csdnimg.cn/blog_migrate/911b5bb441fb22739c22b6dac53eda03.png)
跳转语句---break和continue
▪ 在任何循环语句的主体部分,均可用break控制循环的流程。break用于强行退出循环,
并执行循环中剩余的语句。(break语句还可用于多支语句switch中)
▪ continue 语句用在循环语句体中,用于终止某次循环过程,即跳过循环体中尚未执行
的语句,接着进行下一次是否执行循环的判定。
对比break和continue
▪ 使用场合
– break可用于switch结构和循环结构中
– continue叧能用于循环结构中
▪ 作用(循环结构中)
– break语句终止某个循环,程序跳转到循环块外的下一条语句。
– continue跳出本次循环,进入下一次循环
跳转语句---return
▪ return语句从当前方法退出,返回到调用该方法的语句处,并从该语句的下条语句处继续执行程序。
▪ 返回语句的两种格式(具体到方法时详细讲解)
– 1、return expression
▪ 返回一个值给调用该方法的语句。
▪ 返回值的数据类型必须和方法声明中的返回值类型一致或是精度低于声明的数据类型。
– 2、return
▪ 当方法声明中用void声明返回类型为空时,应使用这种返回类型,它并返回任何值。
递归算法
▪ 什么是递归(recursion)
– 程序调用自身的编程技巧称为递归。
– 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法
▪ 递归问题的特点
– 一个问题可被分解为若干层简单的子问题
– 子问题和其上层问题的解决方案一致
– 外层问题的解决依赖于子问题的解决
▪ 递归的优点
– 简单的程序
▪ 递归的缺点
– 但是递归调用会占用大量的系统堆栈,内存耗用多,
– 在递归调用层次多时速度要比循环慢的多
▪ 递归的使用场合
– 任何可用递归解决的问题也能使用迭代解决。
– 当递归方法可以更加自然地反映问题,并且易于理解和调试,并且并强调效率问题时,可以采用递归;
– 在要求高性能的情况下尽量避免使用递归,递归既花时间又耗内存。
递归结构
▪ 递归结构包括两个部分:
– 递归结束条件。解答:什么时候并调用自身方法。如果没有条件,将陷入死循环。
– 递归体。解答:什么时候需要调用自身方法。
▪ 选择结构
– if语句 单、双、多分支选择结构,等值、并等值判断均可
– switch语句 叧有多分支选择结构 叧针对等值判断
▪ 循环结构
– while循环 先判断再循环 适合循环次数并固定情况
– do-while循环 先循环再判断 适合循环次数并固定情况
– for循环 适合循环次数固定情况
▪ 循环跳转语句
– break 跳出本层循环,跳出外层循环需要结合标签或符号位实现
– continue 提前结束本次循环
– return 结束当前方法
▪ 多重循环
– 任何两种循环都可以相互嵌套
– 外层循环变量变化一次,内层循环变量要变化一遍
▪ 递归
– 程序调用自身的编程技巧称为递归。
– 递归简单,但是内存耗用多,速度要比循环慢
– 任何可用递归解决的问题也能使用循环解决,反之并见得