递归和嵌套循环的区别
2016-01-08 17:31
295 查看
递归和嵌套循环的区别
亲,不要误以为自己调用自己就等于递归了!
其实,我也不知道第一种情况算不算严格意义上滴递归滴呀;
下面的方法是另外的一种方式来实现滴呀;
亲,不要误以为自己调用自己就等于递归了!
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace TreeSearch { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void btnSearch_Click(object sender, EventArgs e) { //查询前折叠所有 trv.CollapseAll(); //关键字 string keyStr = txtKey.Text.Trim(); //遍历根节点 foreach (TreeNode tn in trv.Nodes) { CheckNode(tn, keyStr); FindChildNode(tn, keyStr); } } /// <summary> /// 遍历子节点 /// </summary> /// <param name="tnParent">当前节点</param> /// <param name="keyStr">关键字</param> void FindChildNode(TreeNode tnParent, string keyStr) { foreach (TreeNode tn in tnParent.Nodes) { CheckNode(tn, keyStr); //递归检查当前节点的子节点 FindChildNode(tn, keyStr); } } /// <summary> /// 展示符合条件的节点 /// </summary> /// <param name="tn"></param> void DisplayNode(TreeNode tn) { if (tn.Parent != null) { tn.Parent.Expand(); DisplayNode(tn.Parent); } } /// <summary> /// 检测当前节点 /// </summary> /// <param name="tn"></param> /// <param name="keyStr"></param> void CheckNode(TreeNode tn, string keyStr) { //包含关键字,变红并展示节点 if (tn.Text.Contains(keyStr)) { tn.ForeColor = Color.Red; DisplayNode(tn); } else { //代替初始化的操作方法 tn.ForeColor = Color.Black; } } //从低往高加 public int sum23(int param) { int sum = 0; for (int i = 0; i < param; i++) { sum += 1; } return sum; } //从高往第加 public int sum1(int param) { int sum = 0; for (int i = param; i >= 0; i--) { sum += i; } return sum; } public int sum(int param) { if (param == 0) { return 0; } else { return param += sum(param-1); } } public long Fac(int n) { if (n == 0) { return 1; } else { //用for循环来不断的叠乘 long value = 1; for (int i = n; i > 0; i--) { value *= 1; } return value; } } } }
其实,我也不知道第一种情况算不算严格意义上滴递归滴呀;
下面的方法是另外的一种方式来实现滴呀;
void FindChildNode2(TreeNode tnParetn, string KeyStr) { int len = tnParetn.Nodes.Count; for (int i = 0; i < len; i++) { TreeNode tn= tnParetn.Nodes[i]; if (tn == null) { break; //种方式也是也已滴一 //这个就算是遍历了一颗节点数滴呀; //这种到底算不算是递归呢? } else { CheckNode(tn, KeyStr); FindChildNode2(tn, KeyStr); //就等于这样一种形式滴呀; } } }
相关文章推荐
- jQuery代码墙
- Centos6.6安装apache2.4
- NSURLSession学习笔记(三)Download Task
- 【项目总结】之——JS分割字符串
- 【项目总结】之——JS分割字符串
- swift闭包
- 16个jQuery工具函数
- 多线程抢票
- 经典排序算法的详细分析及C++实现代码
- Web前端开发工程师基本要求
- python3.5[No module named 'encodings']报错
- Postgresql 存储过程--sql语句的where条件的拼接操作
- NSURLSession学习笔记(二)Session Task
- 商用烤地瓜机
- Redhat6安装CentOS的yum
- 高级并发编程学习-线程范围内安全共享数据(使用ThreadLocal方式)
- 替换shell变量里的字符方法
- 关于Unity打Android包自动添加权限的问题
- 路在脚下、梦在远方
- from PyQt4.QtCore import * ImportError: No module named QtCore