js循环结构while
来源:互联网 发布:与外国人学外语知乎 编辑:程序博客网 时间:2024/05/17 15:04
循环结构
先来看看生活中的场景:
(1)食堂阿姨打菜:接过顾客的餐盘→询问菜品→打菜→递回餐盘,重复以上过程,直到所有顾客的菜都打完
(2)快递员送快递:查看送件地址→赶往目的地→电话告知收件人→收件人签收→交快递件,重复以上过程,直到所有需要送的快递都处理完了。
(3)公交司机.........
(4)作业流程......
以上场景都有一个共同点:有条件地重复的做一件事情,每一次做的事情不同但类似
程序是为了解决实际问题。实际问题中存在着重复的动作,那么程序也应该有相应的描述,这就是循环
-案例:
/* 计算1+2+3+4.......+10*/
/* 方案一 */
varsum =1+2+3+4+5+6+7+8+9+10;
/*方案二*/
varsum2 = 0;
sum2 +=1;
sum2 +=2;
sum2 +=3;
sum2 +=4;
sum2 +=5;
sum2 +=6;
sum2 +=7;
sum2 +=8;
sum2 +=9;
sum2 +=10;
但是这两种方案的描述方式都不太理想,如果是要加到10000呢?
注意观察方案二,他重复做一件事(将一个数加到sum2中),每一次不同但是类似
/*方案三*/
var sum3 =0;
var n =1;
while(n<=10) {
sum3 += n;
n++;
alert(sum3)
}
方案三表达的含义和方案二一样,但是表达方式要好的多,比如加到10000,只需要把条件n<=10改为n<=10000
5.2while循环
while是表示“当....则....”,也就是说当某个条件成立时,则一直重复做。
(流程图)
(调试工具查看程序轨迹以及变量的变化情况)
一、while(条件){
循环体
}
二、do{
循环体
}while(条件)
While和do……while的区别是
While是先判断在做,如果条件错误,那么它一次都不会执行。
Do……while是先做在判断,如果条件错误,那么它至少会执行一次。
案例:10以内相加
var sum3 = 0;
var n = 1;
do{
sum3 += n;
n++;
}while(n<=10);
alert(sum3);
1000以内水仙花数
var num = 100 ;
while (num<1000) {
var b100 = Math.floor(num / 100);
var b10 = Math.floor((num % 100) / 10);
var b1 = num % 10;
sum = b100 * b100 * b100 + b10 * b10 * b10 + b1 * b1 * b1;
if(sum == num){
alert(num +"水仙花数");
}
num++;
// alert(num(sum == num ? "是" : "不是") + "水仙花数");
}
GDP预测
var usaGdp = 142562.75;
var chinaGdp = 49098.82;
var year = 2009;
while( chinaGdp <= usaGdp){
usaGdp *=(1 + 0.02);
chinaGdp *=(1 + 0.08);
year++;
}
alert(year+"年,中国("+chinaGdp+")将反超美国("+usaGdp+")");
总结循环的套路
(1)初始状态
(2)循环条件(要重复做的事情)
(3)循环体
(4)为下次循环做准备()
那如何去写循环的程序呢?回答四个问题:
(1)初始状态是怎样的?
(2)重复做的条件是什么
(3)重复做什么
(4)怎么过渡到下一次循环
水仙花数问题
GDP预测
初始状态
var num =10
var usaGdp = 142562.75;
var chinaGdp = 49098.82;
var year = 2009;
循环条件
num<=999
chinaGdp <= usaGdp
循环体
var b100 = Math.floor(num / 100);
var b10 = Math.floor((num % 100) / 10);
var b1 = num % 10;
sum = b100 * b100 * b100 + b10 * b10 * b10 + b1 * b1 * b1;
if(sum == num){
alert(num +"水仙花数");
}
usaGdp *=(1 + 0.02);
chinaGdp *=(1 + 0.08);
为下次循环做准备
num++
year++
案例计算圆周率,π=(1-1/3+1/5-1/7+......)*4
1-1/3+1/5-1/7+变化为(+1/1)+(-1/3)+(+1/5)+(-1/7)
那么他就和我们之前解决的1+2+3+..+10问题就非常类似了,即都是求累加和,只不过每次加的内容不同而已
我们都可以将每一项拆分为:
t = 符号*1/分母
(1)初始状态是怎样的?
sum = 0;
t = 1;
sign = 1 ;
deno = 1
(2)重复做的条件是什么
|t|>=10-6
(3)重复做什么
sum += t
(4)怎么过渡到下一次循环
sign = -sign
deno +=2;
t = sign*1/deno
/*初始状态 */
while(/*循环的条件*/){
/*重复做的事情*/
/*为下一次循环做准备*/
}
for(开始值;循环条件;步长){
/*重复做的事情*/
}
- js循环结构while
- 循环结构:while循环
- while,do while循环结构
- while语句循环结构
- 循环结构-while
- 循环结构(while语句)
- 循环结构while,for
- js while / do while 循环
- 循环结构之 while循环
- 循环结构:do - while循环
- JS While 循环
- js.while循环
- 08.js.while循环
- JS中的while循环
- 循环结构一(while,do while)
- Java 循环结构for、do...while、while
- 语句-循环结构while和do while
- 循环结构语句---for,while,do-while
- 第十章 进程与僵尸进程 (上)
- HDU4565 So Easy!【矩阵快速幂】
- (二十)四大组件的工作过程-ContentProvider
- linux下如何解决socket的error: [Errno 98] Address already in use
- 模块化?组件化?插件化?热更新?热修复?
- js循环结构while
- NYOJ2351---你怎么又插队(技巧:扩大数值)
- 【c++】菱形继承
- 面向对象
- COJ1972-大梵天的恩赐
- Android init.rc如何启动service去执行sh脚本
- STM32之NVIC有点启发1
- 关于ubuntu16.04下无线驱动的问题
- set方式注入属性的一个小细节