我理解,这可能是不可能调试的人谁不能看到整个程序。
我试图使用p5.js库对Dijkstra路径查找算法进行可视化。 我在编写的函数中遇到了一个问题,它只返回相同的值
这个函数的目的是取一个给定的单元格,并检查该单元格是否有一个上面的邻居,左边的邻居,右边的邻居和下面的邻居。 然后,它会检查所有连接到它的细胞,看看哪一个细胞离目标的距离最小。 不过,它唯一能返回的细胞是右边的一个。。。
这是代码,如果有人能想方设法弄清楚这个问题,我会非常满意的:)
function dijkstra(start) {
var record_cell = null;
var record_distance = 1000000000;
var left;
var right;
var above;
var below;
if (start.findLeftNeighbour(start) != null) { left = start.findLeftNeighbour(start) }
if (start.findRightNeighbour(start) != null) { right = start.findRightNeighbour(start) }
if (start.findAboveNeighbour(start) != null) { above = start.findAboveNeighbour(start) }
if (start.findBelowNeighbour(start) != null) { below = start.findBelowNeighbour(start) }
if (left) {
if (left.calculateDistance() < record_distance) {
record_cell = left;
record_distance = left.calculateDistance();
}
}
if (right) {
if (right.calculateDistance() < record_distance) {
record_cell = right;
record_distance = right.calculateDistance();
}
}
if (above) {
if (above.calculateDistance() < record_distance) {
record_cell = above;
record_distance = above.calculateDistance();
}
}
if (below) {
if (below.calculateDistance() < record_distance) {
record_cell = below;
record_distance = below.calculateDistance();
}
}
return record_cell;
}
下面是FindNeighbour函数的示例:
findLeftNeighbour(current) {
for (var n = 0; n < cells.length; n ++) {
if (cells[n].x == (current.x - spacing) && cells[n].y == current.y) {
return cells[n];
}
}
下面是计算距离函数:
calculateDistance() {
var xdiff = target.x - this.x;
var ydiff = target.y - this.y;
var distance = xdiff + ydiff;
return distance;
}
按照要求,我还在return语句之前记录了left,right,abover和below的值。 它只记录了4个对象(与该单元格相邻的4个对象)
可能问题在于您从未实际更改左
,右
,上
,下
的值。 但是,只有这部分代码就很难说了。
我们可以看到start.find***邻居()
和***计算距离()
函数吗?
是否可以在返回
之前记录左
,右
,上
,下
的值?
我正在使用以下Robocopy命令: 问题是它一直在复制*EXTRA file下列出的某些文件,但该文件已在目标中。 我只希望robocopy复制一个更新版本的文件(创建日期不同) 仅当测试文件。zip的创建日期较新。 为了解决这个问题,我尝试使用/xo表示排除旧文件。没有运气。每当我每分钟执行一次脚本时,都会发生这种情况。
问题内容: 我在某处读到,函数应始终仅返回一种类型,因此以下代码被视为错误代码: 我想更好的解决方案是 返回None然后创建一个新的空元组不是更便宜的内存明智的选择吗?或者即使在较大的项目中,这种时差也太小而无法引起注意? 问题答案: 为什么函数应该返回一致类型的值?满足以下两个规则。 规则1-函数具有“类型”-输入映射到输出。它必须返回一致的结果类型,否则它不是函数。一团糟。 从数学上讲,我们说
我在构建递归函数时继续遇到一个问题,其中返回的值与我期望返回的值不同。我很确定这与函数的递归性质有关,但我不知道发生了什么。 在这个缩小的例子中,我有一个带有字符串的函数foo和一个默认值为0的int。给定字符串“测试”并且没有整数,我希望递归函数为每个调用增加numberToBack并将新值传递给下一个调用。这一定是部分正确的,因为如果我在到达基本情况时cout numberToBack,我将获
问题内容: 我正在尝试使用一个字段来获取手动输入,然后使用该数据。 我发现的所有资料都声称我应该使用该函数,但是我还没有找到一个简单的可运行的迷你示例,因此无法正常工作。 我希望有人可以给我打电话,告诉我我做错了什么。这是一个迷你文件: 这给了我一个我可以输入的字段,但是一旦输入数据我就什么也不能做。 我怀疑我的代码不起作用,因为最初它是空的。但是,一旦输入了输入数据,我该如何访问呢? 问题答案:
问题内容: 我正在尝试使用一个字段来获取手动输入,然后使用该数据。 我发现的所有资料都声称我应该使用该函数,但是我还没有找到一个简单的可运行的迷你示例,因此无法使用它。 我希望有人可以给我打电话,告诉我我做错了什么。这是一个迷你文件: 这给了我一个我可以输入的字段,但是一旦输入数据我就什么也不能做。 我怀疑我的代码不起作用,因为最初它是空的。但是,一旦输入了输入数据,我该如何访问呢? 问题答案:
问题内容: 我编写了以下函数,以实现自己的二进制搜索 我知道我的实现已经关闭,但是我对理解递归堆栈更加好奇。 当我调用时,我的函数应返回的值 但相反,它返回None。此外,当我直接调用时 ,我得到的正确值为0。这怎么可能? 问题答案: 您将忽略递归调用的返回值。您还需要 显式地 返回它们: 递归调用与其他任何函数调用一样;他们将结果返回给调用者。如果忽略返回值,然后调用函数结束,那么您将以该调用函
我有一个名为的函数,它将返回一个网站的链接。然后我做一些事情,比如: 找到(找到的是一个列表) 只要爬行返回一个有效的链接,这就可以正常工作,但有时它不会返回任何内容。因此,的值被添加到列表中。 所以我的问题是,是否可以从返回一些不会向列表中添加任何内容的内容?
问题内容: 我写的是,我正在使用Netbeans向每个函数添加类似专业的注释。因此,我从每一个开始,然后按来让Netbeans完成用于以下功能的默认注释方案。 到现在为止,我一直只在PHP语言中使用它,在这种情况下,如果遵循PHP函数确实包含了声明,则Netbeans始终仅在注释方案中添加部分。在所谓的“过程”(不返回任何值的函数)上,缺少此部分。 今天,我为Javascript函数尝试了同样的事