黑马程序员技术交流社区

标题: 嵌套和递归的关系 [打印本页]

作者: 聂玉林    时间: 2012-6-20 13:44
标题: 嵌套和递归的关系
嵌套和递归有什么联系和区别??求解释
作者: 李玮    时间: 2012-6-20 14:04
时间复杂度 两个相差不多  实在要比较的话 一个是操作堆栈的时间(递归),一个是调用变量的时间(循环嵌套)

空间复杂度有区别
循环嵌套占的是程序空间 程序空间复杂度高
递归占得是堆栈空间    堆栈的空间复杂度

在逻辑上而言  递归比循环嵌套更难理解
但是递归可以写成子函数  大大节约我们的时间和程序空间

两种结合 使用效果 你懂得!
作者: 许庭洲    时间: 2012-6-20 14:18
嵌套是在代码里继续往下执行相应模块的代码,而递归是在条件为true时继续执行同一段代码,可以这样说,嵌套和递归都具有执行相似模块的功能,他们的关系是一种兄弟关系。
作者: 张恒维    时间: 2012-6-20 15:18
1楼抽象、2楼误解。(个人看法{:soso_e100:})。
  1. if()
  2. {
  3.     if(){}
  4. }
  5. for(int i=0;i<10;i++)
  6. {
  7.   for(int j=0;j<10;j++){}
  8. }
复制代码
嵌套我们一般的说法是语法嵌套,如上面代码。再看递归:

  1. public int GetSum(int num)
  2. {
  3.     if(num<=1){return num;}
  4.     return num * GetSum(num-1);
  5. }
复制代码
嵌套的代码看似和递归相像,但执行的效果却是不同。嵌套的执行虽然也是由外至内,但外层和内层没有关系,而且最终执行的结果在返回时也没有层次,也就是说嵌套得再深最后也是直接返回。而递归则不然。递归是反复的对自身的调用,层次逐步加深且在返回时也是逐步返回出来。 建议楼主拿去调试并监听变量的变化就明白了。{:soso_e128:}
作者: 黑马龙超    时间: 2012-6-20 15:21
递归的话必然涉及嵌套,这种嵌套,是通过系统栈的入栈和出栈实现的,每一个过程都会经过入栈保存,最后回归时出栈,跟普通函数调用没有实质的区别
只是递归是把一个大问题,有限的归结为小问题的过程;
嵌套的话,可以灵活的多,并且如果不是过多的函数嵌套的话,效率应该高一些。尾递归一般可以化成循环嵌套的形式。
作者: 刘逍遥    时间: 2012-6-22 15:33
本帖最后由 刘逍遥 于 2012-6-22 15:35 编辑

嵌套是语法上逻辑的一种方式,
递归是自己调用自己的一种形式,当然也可以叫做嵌套的一种
作者: 鲍云龙    时间: 2012-6-23 08:29
嵌套:拿for来说就是一个for里面有嵌套了1或多个个完整的循环
递归:拿一个方法来说 就是在这个方法的方法体里面又调用了自己
递归的特点:间接或直接的调用自身,要有结束的条件
递归相对于循环来说他的效率比较低!应用场合不同。




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