3 循环结构
While(满足条件){
当满足条件时执行的内容
}
循环的特点:
有条件的重复执行一件事,每次做的事情不同,但类似。
var num=100;
while(num<1000){
var a=num%10;
var b=Math.floor(num/10)%10;
var c=Math.floor(num/100);
var res="";
if(num==a*a*a+b*b*b+c*c*c){
res=num+"这个数是水仙花数";
alert(res);
}
num++;
}
循环结构最好用流程图表示
判断GDP 总值
2000年时 chn 4089.82
Usa 142562.75
中国的增长率是0.08
美国的增长率是0.02
假设增长率不变,什么时候中国超越美国
var year=2009;
var c1=49089.82;
var u1=142562.75;
while(c1<u1){
var c1=c1*1.08;
var u1=u1*1.02;
year++;
} alert(year+"中国超越美国");
套路:
确定初始状态
循环条件
循环体
为下次循环做准备
|
水仙花数 |
GDP总值 |
确定初始状态 |
Num=100 |
Year=2009 Usa=142562.75 Chn=490889.82 |
循环条件
|
判断num 是不是水仙花数 |
Usa *=1.02 Chn*+1.08 |
为下次循环做准备 |
Num++ |
Year++ |
当我们拿到一个循环的问题的时候应该怎么办:
问自己4个问题:
1. 初始状态是什么
2. 重复的条件是什么
3. 要重复做什么
4. 如何过渡到下一次
计算圆周率()
Pi=(1-1/3+1/5-1/7+1/9……..)*4 精确度最后一项的绝对值小于10^-6
初始状态:
Pi=0;
fenzi=1;
fenmu=1;
重复的条件
将这个分数加到pi里面,
如何过渡到下次循环
分子=分子*-1;
分母=分母+2
结束循环之后,圆周率=pi*4
var pi=0;
var fenzi=1;
var fenmu=1;
while(Math.abs(fenzi/fenmu)>0.000001){
pi+=4*(fenzi/fenmu);
fenzi=fenzi*(-1);
fenmu+=2;
} alert(pi);
do-while
do{重复做的事情
} while()
var s=0;
var num=1;
do{
s+=num;
num++;
}while(num<=100);
alert(s+""+num);
var s1=0;
var num1=1;
while(num1<=100){
s1+=num1;
num1++;
} alert(s1+" "+num1);
do-while 与while本质上没有区别,就是做循环的事情,唯一的区别就是:
do-while 先做一次循环体的内容然后去做判断条件
while 是先去判断条件再来做循环体里面的内容
For 循环 for(初始条件
for(varnum=100;num<1000;num++){
var a=num%10;
var b=Math.floor(num/10)%10;
var c=Math.floor(num/100);
var res="";
if(num==a*a*a+b*b*b+c*c*c) {
res=num+"这个数是水仙花数";
alert(res);}
}
求圆周率,(随机数法)面积为1的正方形中随机扔一豆子
获0-1的随机数,Math.random()
1. 初始状态
Sum=0
Num=0
2. 重复的条件
Num<10000
3. 重复做的事情
随机产生的两个数,判断这两个点是否在圆内,在sum++
4. 为循环做准备
Num++
在圆内的豆子数/总的豆子数
var sum=0;
for(varnum=0;num<10000;num++){
var x=Math.random();//[0,1)
var y=Math.random();
if(Math.sqrt(x*x+y*y)<=1){
sum++;
}
} var pi=4*(sum/num);
alert(pi);