JavaScript的for循環語句練習之解決小馬過河的問題

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章