遞迴及如何用c#遞迴產生多層次XML檔案

來源:互聯網
上載者:User
文章目錄
  • 遞迴
  • 遞迴應用
遞迴

遞迴做為一種演算法在程式設計語言中廣泛應用.是指函數/過程/子程式在運行過程中直接或間接調用自身而產生的重入現象.遞迴是電腦科學的一個重要概念,遞迴的方法是程式設計中有效方法,採用遞迴編寫程式能使程式變得簡潔和清晰.。

一般定義
程式調用自身的編程技巧稱為遞迴( recursion)。
一個過程或函數在其定義或說明中有直接或間接調用自身的一種方法,它通常把一個大型複雜的問題層層轉化為一個與原問題相似的規模較小的問題來求解,遞迴策略只需少量的程式就可描述出解題過程所需要的多次重複計算,大大地減少了程式的代碼量。遞迴的能力在於用有限的語句來定義對象的無限集合。一般來說,遞迴需要有邊界條件、遞迴前進段和遞迴返回段。當邊界條件不滿足時,遞迴前進;當邊界條件滿足時,遞迴返回。
注意:
(1) 遞迴就是在過程或函數裡調用自身;
(2) 在使用遞迴策略時,必須有一個明確的遞迴結束條件,稱為遞迴出口。

遞迴應用

遞迴演算法一般用於解決三類問題:
(1)資料的定義是按遞迴定義的。(Fibonacci函數)
(2)問題解法按遞迴演算法實現。(回溯)
(3)資料的結構形式是按遞迴定義的。(樹的遍曆,圖的搜尋)
遞迴的缺點:
遞迴演算法解題的運行效率較低。在遞迴調用的過程當中系統為每一層的返回點、局部量等開闢了棧來儲存。
遞迴次數過多容易造成棧溢出等。

protected void Button1_Click(object sender, EventArgs e)    {        SqlDataAdapter da = new SqlDataAdapter("select * from [table]", ConfigurationManager.ConnectionStrings["TestConnectionString"].ConnectionString);        DataTable dt = new DataTable("tab1");        da.Fill(dt);        XmlDocument xd = new XmlDocument();        XmlDeclaration xdl = xd.CreateXmlDeclaration("1.0", "utf-8", null);        xd.AppendChild(xdl);        XmlElement xe = xd.CreateElement("root");        xe = XmlElementCreate(dt,"",xd,xe);        xd.AppendChild(xe);        try        {            xd.Save("D://XMLCerate.xml");            Response.Write("OK");        }        catch (Exception ee)        {             Response.Write(ee.Message);        }    }    private XmlElement XmlElementCreate(DataTable dt, string parentcode, XmlDocument xd, XmlElement xee)    {        string strparentcode="";        if (parentcode.Trim().Length == 0)            strparentcode = "parentcode is null";        else            strparentcode = "parentcode='" + parentcode + "'";        DataRow[] dr = dt.Select(strparentcode);        for (int i = 0; i < dr.Length; i++)        {            XmlElement xe = xd.CreateElement("c" + dr[i]["code"].ToString().Replace(".", ""));            XmlAttribute xaCode = xd.CreateAttribute("code");            xaCode.Value = dr[i]["code"].ToString();            xe.Attributes.Append(xaCode);            XmlAttribute xaName = xd.CreateAttribute("name");            xaName.Value = dr[i]["name"].ToString();            xe.Attributes.Append(xaName);            xe = XmlElementCreate(dt, dr[i]["code"].ToString(), xd, xe);            xee.AppendChild(xe);        }        return xee;    }
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.