何为 递归 ?

递归: + 的操作

将大问题化解成小问题的过程。为什么可以化解,是因为大问题的处理方式和小问题的处理方式是一样的。
1、要调用自己本身;
2、要有一个趋于终止的条件。

下面以一个求阶乘的例子简单介绍一下:

public class recursion {
    
    
    public static int fac(int n) {
    
    
        if(n == 1){
    
    
            return 1; //终止条件
        }
        return n * fac(n-1); //调用自身
    }
    public static void main(String[] args) {
    
    
        System.out.println(fac(5));
    }
}
// 运行结果: 120

下面为递归的过程:(第一个维度)

在这里插入图片描述
第二个维度: 方法的调用,需要在栈上开辟内存
栈是先进后出的
先调用 fac(5),逐步调用 fac(4)…… 直到终止条件
压栈 的过程就是 的过程

在这里插入图片描述
只要遇到终止条件 return,函数结束,逐步返回 fac(n) 的值
出栈 的 过程就是 的过程
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_45658339/article/details/108824154