再帰的およびどのようにczhiで再帰的に多重層XMLファイルを生成しますか?


再帰する
再帰的には、アルゴリズムとして、プログラム設計言語で広く使用されています.関数/プロセス/サブルーチンが実行中に直接または間接的に自身を呼び出して発生する再入力現象を指します.再帰的には、コンピュータ科学の重要な概念です.再帰的な方法は、プログラム設計において有効な方法であり、再帰的にプログラムを作成することで、プログラムが簡潔かつ鮮明になります.
一般的に定義されたプログラム呼び出し自体のプログラミング技術を再帰的といいます.1つのプロセスまたは関数は、その定義または間接的に自身を呼び出す方法があり、通常は大きな複雑な問題の層を元の問題と似たような規模の小さい問題に変えて解いています.再帰戦略は、少量のプログラムで解題過程に必要な複数回の計算を記述することができ、プログラムのコード量を大幅に低減します.再帰的能力は、限定された語句で対象の無限集合を定義することにある.一般的に、再帰的には境界条件、再帰的前進セグメント、再帰的リターンセグメントが必要である.境界条件が満たされない場合、再帰的に前進する.境界条件が満たされたら、再帰的に戻ります.再帰はプロセスまたは関数で自身を呼び出すことである.(2)再帰的ポリシーを使用する場合、再帰的輸出と呼ばれる明確な再帰的終了条件が必要である.
再帰的に適用する
再帰的アルゴリズムは、一般に、3つの問題を解決するために用いられる.(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;
    }