循环结构的概念
先来看看生活中的一些场景:
(1) 食堂阿姨打菜:接过顾客的餐盘→询问菜品→打菜→递回餐盘,重复以上的过程,直到所有顾客的菜都打完了。
(2) 快递员送快递:查看送快件地址→赶往目的地→电话告知收件人→收件人签收→交快递件,重复以上过程,直到所有需要送的快件都处理完了。
(3) 公交司机……
(4) 作业流程……
以上场景都有一个共同的特点:有条件的重复的做一件事情,每一次做的事情不同但类似。
程序是为了解决实际问题的,实际问题中存在大量的重复动作,那么程序中也应该有相应的描述,这就是循环。
但是这两种方案的描述方式不大理想,如果是要加到10000呢?
注意观察方案二,它
5.2 while循环
While是表示“当……则……”,也就是某个条件成立时,则一直重复做。
(流程图)
(调试工具查看程序)
do while循环
两者的去别while 是先判断条件然后在运行,do while 是先执行后判断
var year=2009;
var america=142562.17;
var china=49089.82;
do{
america=america+(america*0.02);
china=china+(china*0.08);
year++;
}while(america > china);
alert(year + "中国GDP超过了美国")
总结一下循环的套路
(2) 循环条件
(3) 循环体(要重复做的事情)
(4) 为下次循环做准备
那要如何去写循环的程序呢?,回答四个问题:
(1) 初始状态是怎样的
(2) 重复做的条件是什么
(3) 重复做什么
(4) 怎么过渡到下次的循环
| 水仙花数问题 | gdp预测
|
初始状态 | Num=100 |
var year=2009;
|
循环条件 | num <= 999 | america > china |
循环体 |
|
|
为下次循环做准备 | num++ | year++ |
案例:计算圆周率,π=(1 - 1/3 + 1/5 - 1/7 +……)*4
最后一项的绝对值小于10-6
分析:将公式
1 - 1/3 + 1/5 - 1/7 +
变化为(+1/1)+( 1/3) +(+ 1/5)+( - 1/7)
那么和我们之前解决的1+2+3+…..+10问题就非常类似了
我们可以将每一项拆分为:
t = 符号* 1/分母
(1) 初始状态是怎样的
sun=0;
t = 1;
sign = 1;
deno = 1;
(2) 重复做的条件是什么
|t| >= 10-6
(3) 重复做什么
sum += t
(4)怎么过渡到下次的循环
Sign = -sign
Deno += 2
t = sign * 1/deno