首页 > 代码库 > Java版——递归
Java版——递归
1.Java堆栈和运行时堆栈是两个不同的概念:他们有相似点:在处理方法调用中所扮演的角色基本上是相同的,所以尽管存储的方式不同,却存储了进行这项处理的相似信息。Java解释器的任务是转换.class文件中的信息字节码,这样运行时堆栈可以接管Java堆栈(其仅仅是一个抽象构造)的工作。
2.每个方法的状态,包括main()方法,都是全部自动变量的内容、方法的参数以及返回地址(指出了重新返回器调用者的位置)描述的。包含所有这些信息的数据域在运行时堆栈中,称为活动记录或是栈结构。只要其中一个方法在执行,属于他的活动记录就存在。这个纪录是该方法的私有信息池,是存储正确执行该方法及返回该方法调用位置的必要信息仓库。活动记录的生存期通常很短,因为她们是在进入方法时动态分配的,并且在方法退出时动态收回的。
一个活动记录通常包含以下信息:
方法的所有参数的值,首单元地址;
可以存在别处的局部(自动)变量,活动记录只包含了它们的描述符和指向其存储地址的指针;
返回地址;
一个动态链接;
非void类型的方法的返回值。
3.递归:尾递归;非尾递归;间接递归;嵌套递归;过分递归(逻辑简单性和可读性是支持递归使用的基础。递归的代价是拖长了运行时间并且相对于非递归方法,它占用了更多的运行时堆栈空间,如果递归层次太深,那么运行会导致堆栈溢出并且程序会不正常结束,产生一个不可恢复的错误stackOverflowError)。
4.回溯
Java版——递归
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。