我遇到的代码是XmlNode
和TreeNode
,此函数将xmlnode添加到treenode。它以递归形式工作。请找到完整的代码here。
问题是递归函数如何将void
类型作为返回类型?
我认为递归函数不应该具有void类型,因为在每次执行中它应该提供一个答案并将其放在一个堆栈中,然后在下一轮中它使用上一轮的答案来查找当前的问题。
如果返回类型为void,则表示我们无法在每一轮中进行堆栈。 那么我们如何计算最终答案?
private void AddNode(XmlNode inXmlNode, TreeNode inTreeNode)
{
XmlNode xNode;
TreeNode tNode;
XmlNodeList nodeList;
int i;
// Loop through the XML nodes until the leaf is reached.
// Add the nodes to the TreeView during the looping process.
if (inXmlNode.HasChildNodes)
{
nodeList = inXmlNode.ChildNodes;
for (i = 0; i <= nodeList.Count - 1; i++)
{
xNode = inXmlNode.ChildNodes[i];
inTreeNode.Nodes.Add(new TreeNode(xNode.Name));
tNode = inTreeNode.Nodes[i];
AddNode(xNode, tNode);
}
}
else
{
// Here you need to pull the data from the XmlNode based on the
// type of node, whether attribute values are required, and so forth.
inTreeNode.Text = (inXmlNode.OuterXml).Trim();
}
// throw new NotImplementedException();
}