JavaScript的for循环语句练习之解决小马过河的问题
上篇文章我们说了怎么计算数学问题鸡兔同笼,这边文章咱们来说一下稍微再加大写难度的问题,小马过河。问题是现在有一群马,大马可以驮2石粮食,中马可以驮1石粮食,两头小马才可以驮1石粮食,现在要用100匹马,驮100石粮食,该如何调配?
在这里插入图片描述
1.解决这个问题主要是要先确定三种马加起来一共有100只,同时驮的粮食加起来也得是100。
// 假设大马为x,中马为y,小马为z 那现在便可得出函数 x+y+z=100 2x+y+z÷2=100// 转换为for循环解决则变成了:// 假设大马存在的可能 for (varx=0; x<=50; x++) { // 假设大马存在的情况下 对应的中马存在的情况for (vary=0; y<=100; y++) { // 对应小马存在的情况for (varz=0; z<=200; z++) { if (x+y+z==100&&2*x+y+z/2==100) { document.write("大马有:"+x+"匹,中马有:"+y+"匹,小马有:"+z+"匹"+"<br/>"); } } } }
上面的代码代码虽说解决了问题,但是太过于繁琐,因为我们已经得出了结论,x+y+z=100,所以代码可以简化如下:
for (varx=0; x<=50; x++) { // 假设大马存在的情况下 对应的中马存在的情况for (vary=0; y<=100; y++) { // 对应小马存在的情况varz=100-x-y; if (2*x+y+z/2==100) { document.write("大马有:"+x+"匹,中马有:"+y+"匹,小马有:"+z+"匹"+"<br/>"); } } }
解决此类问题关键在于梳理好所有的判断条件,然后进行计算,同时注意简化代码。