A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 陈志强 中级黑马   /  2013-3-21 23:12  /  1250 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 陈志强 于 2013-3-22 07:05 编辑

在毕老师视频里面File类讲到了递归,什么是递归呢,递归的含义,在内存中是如何体现的呢?它是以什么形式体现的呢?是在函数上还是类里面?递归应当注意的问题是什么呢?如何理解和应用好递归呢?

3 个回复

正序浏览
本帖最后由 HM赵磊 于 2013-3-22 00:17 编辑

1,递归的含义:就是函数自己调用自己
2,在内存中是如何体现的呢?:递归一定会用到栈这种数据结构,栈这种数据结构的特点是先进后出(FILO),每次调用自身都会在栈内存开辟一个空间,直到调用到的最后一个函数,然后从最后的一个函数开始逐步的返回得到的结果。
3,它是以什么形式体现的呢?
  1. void diGui()
  2. {
  3. if(条件)
  4. diGui();//调用自身
  5. }

复制代码
4,是在函数上还是类里面?:递归定义在函数自己内部
5,递归应当注意的问题是什么呢?在使用递归的时候,应该特别注意递归的结束条件,因为如果递归不限定结束条件就是死循环。另外,在使用递归的时候,如果问题的规模比较大,那么会在内存中开辟很多内存空间,有可能会造成内存溢出。
6,如何理解和应用好递归呢?
多多想,多多联系,在实践中理解和应用。   你可以看看一个经典的汉诺塔问题,这是一个经典的递归。还要在数据结构中,树,图等定义都是使用递归的。
注:递归可以实现的一定可以使用非递归实现,但是一般都会用到栈。
回复 使用道具 举报
递归就是函数自身调用自身的一种表现形式或者编程手法。参见day20中的FileDemo3.java
递归要注意:
  1,限定条件。
  2,要注意递归的次数,尽量避免内存溢出。
关于递归多画画程序流程图就容易明白了!
回复 使用道具 举报
递归就是在函数内部调用函数本身,也可以说是在方法内部调用方法本身,用递归解决的典型问题是斐波那契数列,还有阶乘,二叉树;使用递归要注意编写好结束的条件,否则递归嵌套太深会导致系统资源崩溃。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马