返回类型为void的递归函数

时间:2016-01-28 17:32:24

标签: c# recursion

我遇到的代码是XmlNodeTreeNode,此函数将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();
}

0 个答案:

没有答案