双重循环的执行原理
以下面的for循环为例:
for(int i=0;i<2;i++){
for(int j=0;j<2;j++){
console.log(`${i}${j}`);
}
}
输出结果为 00 01 10 11;
外层for循环每运行一次,每次的的循环就会完整的运行一遍。当 i = 0 时,内层循环 j 从 0 到 1 赋值;当 i = 1 时,内层循环 j 再次从 0 到 1 赋值。一共运行 i * j 次。不仅是双重循环,三层甚至更多都是这个原理。
下面进行双重循环的实例:
百鸡百钱 : 有一百钱 要买一百鸡 公鸡5钱1只 母鸡3钱1只 仔鸡3只1钱
一百钱,买一百鸡,每种鸡都要有
<script>
/* 题目分析:每种鸡都要有,且为整数,这里将钱的数目和鸡的价格
扩大三倍,避免在运算时出现浮点数。 */
var money = 300; //钱的数目扩大3倍,
var cockNum = 1; //公鸡数目,15一只
var henNum = 1; //母鸡数目,9钱一只
var ckickNum = 1; //小鸡数目,1钱一只
var num = 3; //鸡的总数目
for(cockNum = 1; cockNum < 19; cockNum ++){//当母鸡和小鸡各只有 1 只时,公鸡最多 19 只
for(henNum = 1; henNum < 31; henNum ++){//当公鸡和小鸡各只有 1 只时,母鸡最多 31 只
ckickNum = money - cockNum * 15 - henNum * 9;/*小鸡价格为 1 ,money减去公鸡的费用再减去母鸡的费用就是小鸡的数目。*/
num = cockNum + henNum + ckickNum;//所有鸡的总数目
if(ckickNum < 1)//如果小鸡的数目小于 1 ,则不满足要求,跳出循环。
break;
else if(ckickNum >= 1 && num == 100){/*如果小鸡的数目大于等于 1 且鸡的总数为100,则满足要求,输出每种鸡的数目。*/
console.log(`公鸡数为:${cockNum},母鸡数为${henNum},小鸡数为${ckickNum}时,正好百鸡百钱。`)
}
}
}
</script>