Java工程师知识树

Java基础-基础语法-递归

2020-12-30  本文已影响0人  HughJin

Java工程师知识树 / Java基础


什么是递归?

简单地说,就是如果在函数中存在着调用函数本身的情况,这种现象就叫递归。

以阶乘函数为例,如下, 在 factorial 函数中存在着 factorial(n - 1) 的调用,所以此函数是递归函数.

public int factorial(int n) {
    if (n < =1) {
        return 1;
    }
    return n * factorial(n - 1)
}

递归思想

递归思想

递归的阶段

递归的阶段

分析递归方法在JVM的内存结构

public static int jieCheng(int n) {
    if (n <=1) {
        return 1;
    }
    return n * jieCheng(n - 1);
}

public static void main(String[] args) {
    System.out.println(jieCheng(5));
}

执行以上代码递归内存结构图如下

递归内存结构图

递归函数特点:

一句话总结递归:自我调用且有完成状态。

递归算法通用解决思路:

递归总结

形成递归条件为自我调用且有完成状态。
循环能干的事,递归都能干;递归能干的循环不一定能干。
工作开发过程中,能用循环解决的,尽量不适用递归.因为递归使用栈内存处理数据,可能抛出栈溢出异常(StackOverflowException)。

递归扩展
一些常见的使用递归的问题:简单递归

上一篇 下一篇

猜你喜欢

热点阅读