几个经典的循环案例:
var i=0;
var h=0.0001;
while(true){
i++;
h=h*2;
if(h>8848){
break;
}
}
alert(i);
首先定义折叠次数i,一张纸初始高度0.0001,然后因为不清楚折叠的次数,这里可以考虑使用while循环。
while循环中,第一次折叠,所以i++,然后高度乘以2,然后判断高度是否大于8848,如果是跳出此次,如果不是则继续循环,直到h>8848,然后执行break跳出,输出i的值。
这里还有一个方法:
var i=0;
var h=0.0001;
while(h<=8848){
h=h*2;
i++;
}
alert(i);
思路基本相同,在while中判断h小于等于8848,如果不是,循环中h乘以2,i加一,直到h大于8848,输出i的值。
var y=1;
var x=0;
var c=0;
var sy=0;
var sx=0;
var sc=0;
for(i=1;i<=6;i++){
sy=y;
sx=x;
sc=c;
y=sc+sx;
x=sy;
c+=sx;
}
alert(y+","+x+","+c);
这里最大的问题就是要设置一个中间变量,不仅要定义当前兔子的数量,还要定义出上个月兔子的数量,然后推算:
开始:幼兔 1 小兔 0 成兔 0 一个月后:幼兔 0 小兔 1 成兔 0 二个月后:幼兔 1 小兔 0 成兔 1 三个月后:幼兔 1 小兔 1 成兔 1 四个月后:幼兔 2 小兔 1 成兔 2 五个月后:幼兔 3 小兔 2 成兔 3 六个月后:幼兔 5 小兔 3 成兔 5
当前月份幼兔 = 上个月的成兔+上月小兔 当前月份小兔 = 上月幼兔 当前月份成兔 = 上月成兔+上月小兔
然后定义出当前每种兔子数量,上个月每种兔子数量,建立循环,在循环中将本月兔子数量的值赋给上个月,再根据上边的式子计算当前月份兔子数量,需要注意控制循环6次,所以i=1,i<=6。
因为有三种物品要买,所以这里考虑要用三层for循环嵌套
var s=0;
for(var i=1;i<=13;i++){
for(var l=1;l<=66;l++){
for(var k=1;k<=100;k++){
if(15*i+3*l+2*k==200){
s=s+1;
}
}
}
}
alert(s);
三层fr循环,每一层代表每个商品的数量,然后判断三种商品总金额是不是正好200,如果是,s也就是成功的方案+1。
var m=0;
for(var i=1;i<=50;i++){
for(var l=1;l<=100;l++){
for(var k=1;k<=200;k++){
if((i*2+l*1+k*0.5==100)&&(i+l+k==100))
{
m=m+1;
}
}
}
}
alert(m);
这里思路和上一个问题相同,唯一需注意的是,题目对记得总金额和数量都有要求,所以if判断中,要有两个条件用&&或者连接。
var m=0;
for(var i=0;i<=20;i++){
for(var l=0;l<=10;l++){
for(var k=0;k<=4;k++){
if(i+l*2+k*5==20){
m=m+1;
}
}
}
}
alert(m);
这个题目和上面两个的思路是相同的,需要注意的是因为没有规定每种钱至少一种,所以循环初始值为0。
1 先根据情况确定使用哪种循环
2 在看方法,循环嵌套,还是中间变量
3 以上3.4.5题由于总金额在if中已经固定了,所以外层嵌套的循环中的判断条件只要不小于最小值,再大也没有关系,所以直接设定了只买一种商品是最多内卖多少作为判断条件。