Dre*_*ash 5 php algorithm math
我是一名自学成才的开发人员(现在大约3年),我想通过学习如何将数学方程编写成代码来提高我的开发技能.
这是继续困扰我的事情,我看到许多书籍和文章伴随着发光的数学方程式,真正看起来非常有趣.我可以读取它们的一部分(乘法,除法,小数,西格玛,变量),但是当我在代码中实现它们时遇到麻烦.
例如,如何开始理解这些方程式:http://en.wikipedia.org/wiki/Manhattan_distance并开始用代码编写它们?
什么地方的入门建议?是不是代码问题,但缺乏基本的数学理解?我愿意倾听和阅读,因为我觉得这种能力对于开发人员来说非常重要.
Ham*_*ite 11
I can read parts of them (multiplication, division, decimals, sigma, variables)
but I have troubles when going off to implement them in code.
Run Code Online (Sandbox Code Playgroud)
好吧,我猜的关键是你需要能够将你感兴趣的公式分解成它的组件,如果你能理解如何单独编写这些组件,你就可以将它们粘合回来一起以代码的形式.
让我们以二维空间中具有固定(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
Run Code Online (Sandbox Code Playgroud)
所以我们的功能就像
function mdistance (x1, y1, x2, y2) {
???
}
Run Code Online (Sandbox Code Playgroud)
功能(功能体)的内部应该是什么样的?现在我们检查我们想要重写为代码的数学公式.维基百科的版本(在"形式描述"下)处理任意维度的情况 - 我们也可以这样做,但是现在我们只考虑二维情况.所以n就我们而言,他们是2,我们想要计算|x1 - x2| + |y1 - y2|.这是失去sigma表示法的结果,有利于描述带有两个加数的和的表达式.但我们还没有弄清楚如何|a - b|在计算机代码中表达.
所以现在功能看起来像
function mdistance (x1, y1, x2, y2) {
return bars(x1, x2) + bars(y1, y2);
}
Run Code Online (Sandbox Code Playgroud)
而且,就目前而言,这很好,因为我们已经把我们还不知道如何做的事情看作是另一个被称为的函数bars().一旦我们定义bars(),该函数mdistance()将工作得很好,当然假设我们的定义bars()是明智的.所以问题只是定义bars().通过将问题分解为其组成部分,我们使我们的工作变得更容易,因为我们只需要使每个部分都工作 - 这比使一切工作一次更简单.
那应该怎么bars()定义?好吧,|a - b|只是表达了"绝对价值a - b" 的想法.PHP有一个内置函数,用于实数的绝对值; 它是abs().所以我们定义bars()如下:
function bars (a, b) {
return abs(a - b);
}
Run Code Online (Sandbox Code Playgroud)
现在我们的功能mdistance()将按照我们想要的方式工作.
| 归档时间: |
|
| 查看次数: |
2114 次 |
| 最近记录: |