0

JavaScriptのメソッドは次のとおりです。

findNode: function(root, w, h) {
    if (root.used)
        return this.findNode(root.right, w, h) || this.findNode(root.down, w, h);
    else if ((w <= root.w) && (h <= root.h))
        return root;
    else
        return null;
}

この行は特にC#では機能しません

return this.findNode(root.right, w, h) || this.findNode(root.down, w, h);

これはそれを翻訳する私の試みですが、これが機能するか、アルゴリズムを破るかについてセカンドオピニオンを使用することができます。私が行方不明になっているより良い方法はありますか?

private Node FindNode(Node node, Block block)
{
    Node n;
    if (node.used) // recursive case
    {

        // is this a good translation of the JavaScript one-liner?

        n = FindNode(node.right, block);
        if (n != null)
        {
            return n;
        }
        else
        {
            return FindNode(node.down, block);
        }
    }
    else if ((block.width <= node.width) && (block.height <= node.height)) // Base case
    {
        return node;
    }
    else
    {
        return null;
    }
}

これが私が取り組んでいる元のアルゴリズムです。

4

1 に答える 1

2
n = FindNode(node.right, block);
return n ?? FindNode(node.down, block);  

私が行う唯一の変更になります

于 2013-01-31T00:48:41.150 に答える