I can read parts of them (multiplication, division, decimals, sigma, variables)
but I have troubles when going off to implement them in code.
嗯,我想關鍵的事情是,你需要能夠打破你有興趣到它的組成部件的公式,如果你能理解如何單獨對這些代碼進行編碼,然後您就能夠以代碼的形式將它們粘合在一起。
讓我們以二維空間中兩點間的曼哈頓距離爲例,用固定的(x, y)
座標系統。你想寫一個函數,將需要兩點,並給你曼哈頓之間的距離之間的點。讓我們放棄使用面向對象的概念,這裏只是假設你有四個輸入變量:
x1, the x-coordinate of the first point
y1, the y-coordinate of the first point
x2, the x-coordinate of the second point
y2, the y-coordinate of the second point
所以我們的功能就會像
function mdistance (x1, y1, x2, y2) {
???
}
應該採取什麼功能的內部(函數身體)看起來像?現在我們檢查一下我們想要作爲代碼重寫的數學公式。維基百科的版本(在「形式描述」下)處理任意維度的情況 - 我們也可以這樣做,但現在我們只考慮二維情況。所以他們的n
是2,就我們而言,我們想要計算|x1 - x2| + |y1 - y2|
。這是丟失西格瑪符號而贊成描述帶有兩個加數的和的表達式的結果。但是我們仍然沒有計算出如何在計算機代碼中表達|a - b|
。
所以,現在的功能可能看起來像
function mdistance (x1, y1, x2, y2) {
return bars(x1, x2) + bars(y1, y2);
}
而這,儘可能去,是好的,因爲我們已經分離出我們還不知道該怎麼做,因爲另一個函數的東西,稱爲bars()
。一旦我們定義bars()
,功能mdistance()
會工作得很好,假設,當然,我們對bars()
定義是明智的。所以問題只是定義bars()
。通過將問題分解爲其組成部分,我們使工作變得更加簡單,因爲我們只需要使每個部分都能夠工作 - 這比將所有內容一次性工作更簡單。
那麼我們應該如何bars()
界定?那麼,|a - b|
只是表達了「a - b
的絕對值」的想法。 PHP有一個實數的絕對值的內置函數;它是abs()
。所以我們定義bars()
這樣的:
function bars (a, b) {
return abs(a - b);
}
現在,我們的功能mdistance()
的工作只是我們想要的方式。
如果你只是想知道是什麼符號的含義,有維基百科的[數學符號列表](http://en.wikipedia.org/wiki/List_of_mathematical_symbols)。但是如果你想了解背後的概念......好吧,如果你可以自學編程,你可以自學數學! –
嗯,這有助於很多,謝謝!我很感激小費,有什麼具體的數學方向我應該去學習? *看到,因爲有像代數,微積分,統計學這麼多樹枝... * – Dreamslash
http://www.amazon.co.uk/Mathematics-Physics-Programmers-Danny-Kodicek/dp/1435457331 – vascowhite