试图找到最短路径

Attempting to find the shortest path

所以我有以下代码,我认为它会通过节点递归,一旦达到目标,return 最短。但是我遇到了 Stack Overflow。

注意: GetConnectedParts 是 Part 的一种方法,在当前设置下它 return 是每个可访问的节点。

注2: 从头到尾有一条路,实际上是多条路。

我的代码在这里,如果您能提供任何帮助,我将不胜感激:

function FindPath(start, finish, path)
    --Define a table to hold the paths
    local paths = {}
    --Make a default argument
    path = path or {start}
    --Loop through connected nodes
    for i,v in ipairs(start:GetConnectedParts()) do --Overflow occurs here
        --Determine if backtracking
        local loop = false
        for i,vv in ipairs(path) do
            if v == vv then
                loop = true
            end
        end
        if not loop then
            --Make a path clone
            local npath = {unpack(path)}
            if v == finish then
                --If we reach the end add the path
                paths[#paths+1] = npath
            else
                --Otherwise add the shortest part extending from this node
                paths[#paths+1] = FindPath(v, finish, npath)
            end
        end
    end
    --Find and return the shortest path
    local lengths = {}
    for i,v in ipairs(paths) do
        lengths[#lengths+1] = #v
    end
    local least = math.min(unpack(lengths))
    for i,v in ipairs(paths) do
        if #v == least then
            return v
        end
    end
end

哇哦。我的问题实际上很容易解决。我没有将零件放在路径本身内。抱歉造成混淆。