帮助递归和返回值

时间:2011-04-08 04:10:27

标签: c# .net string recursion

这是之前发布的问题的扩展。我试图以递归方式构建一个字符串。我需要更改下面的函数来执行此操作 - 函数的每次递归都会生成所需的字符串,但我需要将它们连接在一起并返回整个字符串。 'related'作为一个空字符串传递给函数,我想我使用string.Format的方式会将每个递归附加到'相关'字符串?显然不是。

不确定如何...

private string getRelatedNews(Taxonomy taxData, string related, string contentTitle)
{
    foreach (TaxonomyItemData item in taxData.TaxonomyItems)
        {
            if (taxData.TaxonomyName.Equals(contentTitle) && taxData.TaxonomyItemCount != 0)
            {
                related = string.Format("{0}<li><a href='{1}'\">{2}</a></li>", related, item.Link, item.Name);
            }                   
        }
    // Show all its sub categories
    foreach (TaxonomyData cat in taxData.Taxonomy)
        {   
            getRelatedNews(cat, related, contentTitle);
        }

    return(related);

}

2 个答案:

答案 0 :(得分:5)

foreach (TaxonomyData cat in taxData.Taxonomy)
    {   
        getRelatedNews(cat, related, contentTitle);
    }

应该是

foreach (TaxonomyData cat in taxData.Taxonomy)
    {   
        related = getRelatedNews(cat, related, contentTitle);
    }

因为字符串是不可变的。

答案 1 :(得分:0)

试试吧......

related = getRelatedNews(cat, related, contentTitle);

我不确定你的程序的逻辑和流程......然后我认为必须像这样调用递归函数....

private string getRelatedNews(Taxonomy taxData, string related, string contentTitle)
{
    foreach (TaxonomyItemData item in taxData.TaxonomyItems)
        {
            if (taxData.TaxonomyName.Equals(contentTitle) && taxData.TaxonomyItemCount != 0)
            {
                related = string.Format("{0}<li><a href='{1}'\">{2}</a></li>", related, item.Link, item.Name);
            }                   
        }
    // Show all its sub categories
    foreach (TaxonomyData cat in taxData.Taxonomy)
        {   
            related = getRelatedNews(cat, related, contentTitle);
        }

    return(related);

}