【问题标题】:PHP Recursion doesn't seem to be traversing all avenuesPHP 递归似乎并没有遍历所有途径
【发布时间】:2018-10-21 09:37:44
【问题描述】:

这个程序应该找到所有可能的穿过迷宫的方法,并将它得到的最远距离保存在一个全局变量中。相反,它只走一条路然后结束?我猜我没有正确使用递归或其他东西。 $draw_co2 是一个由 0 和 1 组成的数组,其中 1 是路径,0 是墙。我已将 $GLOBALS['route'] 收集的点的输出包含在下面迷宫本身的顶部。根据代码,我希望整个主要的红色分支都是白色的?

我使用的是 else if 而不是 else。如下所述,使用 else 来探索所有分支。

【问题讨论】:

  • 您的代码似乎是正确的,我相信正在发生的事情是它正在尽其所能,走到死胡同并且永远不会“转身”。您的代码看起来不会回溯并尝试与我理解的不同的路线。由于您的代码在 if/else 语句中的加权方式,由于具有一定的顺序优先级,它很可能总是以该位置结束。
  • 由于 if 语句,我希望代码能够探索两个/所有分支。就像左右都是 1 一样,我希望有 2 个分支可以探索。这仅遍历一条路径?至少我希望它作为替代路径的一部分左右移动一点。显然不是用 ifs 创建分支,我不明白为什么。
  • 这是因为您的elses。从if 中删除else 以探索所有选项 - 目前它只采用第一个可用选项...

标签: php recursion maze


【解决方案1】:

代码sn-p中的递归没有问题。我最好的猜测是,唯一可能导致这种情况的是$draw_co2。我认为$draw_co2 中没有递归可以遍历的路径。为了测试,我建议在数组$draw_co2 中创建一个明确的路径,并在递归函数中传递起始坐标。希望对您有所帮助。

编辑

如果您将所有else ifs 更改为仅if,这可能会遍历所有路径。

【讨论】:

  • 我已更新帖子以包含输出图片。我不明白 $draw_co2 可能是什么问题。
  • 哇,我是个白痴。这就是你在不睡觉的情况下编码时得到的。好抓住我的男人。
猜你喜欢
  • 2019-01-04
  • 1970-01-01
  • 2018-11-15
  • 2014-12-07
  • 1970-01-01
  • 1970-01-01
  • 2013-06-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多