黑马程序员技术交流社区

标题: 关于递归的一些问题 [打印本页]

作者: guobin_lu    时间: 2013-3-30 16:04
标题: 关于递归的一些问题
看杨老师的视频  讲到递归有一些不明白  为什么是自己调用自己,  会等待第一次 执行完毕

  1. private void button2_Click(object sender, EventArgs e)
  2.         {
  3.             foreach (TreeNode node in treeView1.Nodes)
  4.             {
  5.                 //分析过程中“讲理”
  6.                 DisplayNode(node);
  7.             }
  8.         }

  9.         /// <summary>
  10.         /// 显示当前节点的信息,如果有子节点,则显示子节点
  11.         /// </summary>
  12.         /// <param name="node"></param>
  13.         void DisplayNode(TreeNode node)
  14.         {
  15.             textBox1.AppendText(node.Text+"\r\n");
  16.             //如果节点有子节点
  17.             if (node.Nodes.Count > 0)
  18.             {
  19.                 //遍历当前节点的子节点
  20.                 foreach (TreeNode childNode in node.Nodes)
  21.                 {
  22.                     //显示子节点。不用仔细分析调用过程
  23.                     DisplayNode(childNode);
  24.                 }
  25.             }
  26.         }

  27.         //log4net、quartz
复制代码

作者: 胡志超    时间: 2013-3-30 16:10
递归就是自己调用自己,但是中间会进行条件判断,当条件不满足的时候。递归就会结束
作者: 刘胜寒    时间: 2013-3-30 16:14
递归本身调用自己这个是必须的。不然怎么叫递归。加入求1+2+3+...+n 的和,用递归是这样写的。
  1. public static int sum(int n)
  2. {
  3.                 if(n==1)return 1;
  4.                 return n + sum(n-1);
  5. }
复制代码
递归搞点简单的理解一下,然后就懂了
作者: 郑丹丹1990    时间: 2013-3-30 22:25
怎么说呢?你若学习了数据结构就很好理解了。
函数调用就是栈的的一个操作,先进后出。

qw.rar

480 Bytes, 下载次数: 112


作者: 郑丹丹1990    时间: 2013-3-30 22:33
A{
    B{
          C{}
     }
}
ABC是3个函数,关系是AS调用B,B调用C。
左大括号代表方法体的开始,右大括号方法体的结束。
A调用B的前提是B执行结束,B调用C的前提是C执行结束。
C执行结束,返回函数B的位置开始执行B,
B执行结束,返回函数A的位置开始执行A。
递归就是A=B=C,每次递归方法名一样,返回值类型一样,只有参数不一样。
这样也许能帮助您理解??
建议:数据结构中栈的基本知识可以巩固一下。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2