递归的写法

    技术2022-05-19  26

    foreach (DataRow dr0 in dt.Rows) { if ((string)dr0[1] == "") { tn0.Text = (string)dr0[2]; tn0.Name = (string)dr0[0]; tn0.Tag = (string)dr0[1]; } } tn1 = new TreeNode(); tn1.Nodes.Add(tn0); tn1 = tn0; tn3 = tn1; method(tn1); treeView1.Nodes.Add(tn1); --------------------------------------- private void method(TreeNode tn1) { foreach( DataRow dr in dt.Rows ) { tn2 = new TreeNode(); tn2.Name = (string)dr[0]; tn2.Tag = (string)dr[1]; tn2.Text = (string)dr[2]; if (tn2.Tag.ToString() == tn1.Name.ToString()) { tn1.Nodes.Add(tn2); method(tn2); } } }

    这个程序 找到头结点,传递头结点 开始.递归的思想是 树的深度遍历循环所有的 foreach在条件满足的地方调用.if确定两点: 循环 和 传递参数传递参数 在递归函数中传递函数循环 .有for 或 while循环 因为 递归的实质是重复遍历找到结构并建立结构在for 或while中调用递归函数上面的是 在出现的条件中(在条件 调用中建立结构)满足后调用 传递当前参数. tn2下面的是直接遍历 所以直接调用所以建立时有两个参数 , 一个是传递参数 ,一个是当前参数 , 知道关系, 建立起结构而遍历时只需要一个就可以了. 知道结构 而遍历

    private void button1_Click(object sender, EventArgs e) { TreeView tr1; tr1 = treeView1; for (int i = 0; i < tr1.Nodes.Count; i++) { richTextBox1.Text = richTextBox1.Text + tr1.Nodes[i].Text + "/n"; method(tr1.Nodes[i]); } } private void method(TreeNode tn1) { int i, j = tn1.Nodes.Count; for (i = 0; i < tn1.Nodes.Count; i++) { richTextBox1.Text = richTextBox1.Text + tn1.Nodes[i].Text + "/n"; method(tn1.Nodes[i]); } }

    有了递推公式写函数就容易了。所以遇到写递归运算的题目,一定要先从数学方向入手。


    最新回复(0)