Java版——递归

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java版——递归相关的知识,希望对你有一定的参考价值。

1.Java堆栈和运行时堆栈是两个不同的概念:他们有相似点:在处理方法调用中所扮演的角色基本上是相同的,所以尽管存储的方式不同,却存储了进行这项处理的相似信息。Java解释器的任务是转换.class文件中的信息字节码,这样运行时堆栈可以接管Java堆栈(其仅仅是一个抽象构造)的工作。

2.每个方法的状态,包括main()方法,都是全部自动变量的内容、方法的参数以及返回地址(指出了重新返回器调用者的位置)描述的。包含所有这些信息的数据域在运行时堆栈中,称为活动记录或是栈结构。只要其中一个方法在执行,属于他的活动记录就存在。这个纪录是该方法的私有信息池,是存储正确执行该方法及返回该方法调用位置的必要信息仓库。活动记录的生存期通常很短,因为她们是在进入方法时动态分配的,并且在方法退出时动态收回的。

  一个活动记录通常包含以下信息:

    方法的所有参数的值,首单元地址;

    可以存在别处的局部(自动)变量,活动记录只包含了它们的描述符和指向其存储地址的指针;

    返回地址;

    一个动态链接;

    非void类型的方法的返回值。

3.递归:尾递归;非尾递归;间接递归;嵌套递归;过分递归(逻辑简单性和可读性是支持递归使用的基础。递归的代价是拖长了运行时间并且相对于非递归方法,它占用了更多的运行时堆栈空间,如果递归层次太深,那么运行会导致堆栈溢出并且程序会不正常结束,产生一个不可恢复的错误stackOverflowError)。

4.回溯

以上是关于Java版——递归的主要内容,如果未能解决你的问题,请参考以下文章

[Algorithm]Java 版递归算法解迷宫问题哈诺塔问题八皇后问题

Java中递归复制文件夹及文件(简易版)

Java中递归复制文件夹及文件(简易版)

数据结构之树(Java 实现版)

java实现表达式求值 (20 分)-------非递归版

Java版算法思想递归&分治&回溯&枚举&基础数论