<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title></head><body> <script> /* 有公鸡、母鸡、小鸡一共100只,其中公鸡:5钱,母鸡:3钱;三只小鸡一共1钱。 现在要100钱买100鸡,算一下公鸡、母鸡、小鸡各有多少只? 假设:公鸡:x只;母鸡:y只;小鸡:z只 x+y+z=100 5*x+3*y+z/3=100 需要列举三个等式才能计算出来?只有两个。 */ //多重循环:就是循环里面嵌套循环;也称为循环的嵌套; //x=0;需要匹配y从0到100,逐个匹配; //y=0;逐个匹配z从0到100;y=1;匹配z从0到100;y=2,匹配z从0到100; //最终匹配100*100*100=1000000;1百万次 // for (var x = 0; x <= 100; x++) { //x:公鸡 // for (var y = 0; y <= 100; y++) { //y:母鸡 // for (var z = 0; z <= 100; z++) { //z:小鸡 // if ((x + y + z == 100) && (5 * x + 3 * y + z / 3 == 100)) { // document.write("公鸡:" + x + ",母鸡:" + y + ",小鸡:" + z + "<br/>"); // } // } // } // } /* 提高效率: 1.降低循环次数;鸡:活蹦乱跳的,一定是整数:20*33*100;66000;20*33 2.减少循环,原来3个,能不能变成2个 */ for (var x = 0; x <= 100 / 5; x++) { //x:公鸡,最大个数:20 for (var y = 0; y <= 100 / 3; y++) { //y:母鸡 ;最大33 //有个x+y+z=100,可以根据这个公式:z=100-x-y,得到z的值,所以不需要循环了 z = 100 - x - y; if ((5 * x + 3 * y + z / 3 == 100)) { document.write("公鸡:" + x + ",母鸡:" + y + ",小鸡:" + z + "<br/>"); } } } </script></body></html>