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;
}
}
Here is the original algorithm I'm working off of.
最佳答案
n = FindNode(node.right, block);
return n ?? FindNode(node.down, block);
这是我唯一要做的改变