JavaScript的for循環語句練習之解決小馬過河的問題
上篇文章我們說了怎麼計算數學問題雞兔同籠,這邊文章咱們來說一下稍微再加大寫難度的問題,小馬過河。問題是現在有一羣馬,大馬可以馱2石糧食,中馬可以馱1石糧食,兩頭小馬纔可以馱1石糧食,現在要用100匹馬,馱100石糧食,該如何調配?
1.解決這個問題主要是要先確定三種馬加起來一共有100只,同時馱的糧食加起來也得是100。
// 假設大馬爲x,中馬爲y,小馬爲z 那現在便可得出函數 x+y+z=100 2x+y+z÷2=100
// 轉換爲for循環解決則變成了:
// 假設大馬存在的可能
for (var x = 0; x <= 50; x++) {
// 假設大馬存在的情況下 對應的中馬存在的情況
for (var y = 0; y <= 100; y++) {
// 對應小馬存在的情況
for (var z = 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 (var x = 0; x <= 50; x++) {
// 假設大馬存在的情況下 對應的中馬存在的情況
for (var y = 0; y <= 100; y++) {
// 對應小馬存在的情況
var z = 100 - x - y;
if (2 * x + y + z / 2 == 100) {
document.write("大馬有:" + x + "匹,中馬有:" + y + "匹,小馬有:" + z + "匹" + "<br/>");
}
}
}
解決此類問題關鍵在於梳理好所有的判斷條件,然後進行計算,同時注意簡化代碼。
視頻講解鏈接:
https://www.bilibili.com/video/BV12p4y1Q7rN