深入理解递归:概念、执行机制、规则及其使用

目录

深入理解递归:概念、执行机制、规则及其使用

一、递归

递归就是方法自己调用自己,每次调用时传入不同的变量。

二、递归执行机制

递归打印示例代码:

public class RecursionTest {
主要的公共静态方法是 main 方法,它接收一个字符串数组作为参数。 这个方法用于程序的入口点,程序从这里开始执行。 在这个方法内部,可以编写各种逻辑和代码来实现程序的功能。 它是 Java 程序的核心部分,通过调用其他方法和执行特定的操作来完成程序的任务。
        T t = new T();
        t.test(4);
    }
}
class T{
    public void test(int n){
        if (n > 2){
            test(n - 1);
        }
        System.out.println("n=" + n);
    }
}

执行流程图:

三、递归的规则

执行一个方法时,会创建一个新的空间。这个空间是受保护的、独立的,属于栈空间。

2、方法的局部变量是独立的,不会相互影响。

如果方法中使用的是引用类型变量,像数组或者对象这类的,那么就会共享该引用类型的数据。

递归需要朝着退出递归的条件靠近。如果不这样做,就会出现无限递归的情况,进而会报 StackOverflowError 错误。

当一个方法执行完毕时,就会返回。遇到 return 时,也会返回。它遵守谁调用就将结果返回给谁的原则。同时,当方法执行完毕或者返回时,该方法就会执行完毕。

四、递归使用

使用递归的方法来求出斐波那契数列,像 1,1,2,3,5,8 等等这样的数列。给定一个位数 n,需要求出 n 在这个数列中所对应的数值。

示例代码:

public class RecursionTest1 {
    public static void main(String[] args) {
        A a = new A();
获取斐波那契数列的值,通过调用对象 a 的 fibonacci 方法并传入 -1 作为参数,将返回的结果赋值给变量 fibonacci 。
        if (fibonacci > 0){
System.out.println("它的值为" + fibonacci);
        }else {
请将一个正数传递进来。
        }
    }
}
class A{
    public int fibonacci(int n){
        if (n >= 1){
            if (n == 1 || n == 2){
                return 1;
            }else {
返回 fibonacci(n 减 2)与 fibonacci(n 减 1)的和;
            }
        }else {
            return -1;
        }
    }
}

猴子吃桃这件事,有一堆桃子存在。猴子在第一天的时候,吃了这堆桃子当中的一半,并且还额外多吃了一个。从第二天开始,往后的每一天,猴子都吃当时桃子数量的一半,接着再多吃一个。等到第十天的时候,就只剩下一个桃子了。那么,第一天原本有多少个桃子呢?

示例代码:

public class RecursionTest2 {
    public static void main(String[] args) {
        B b = new B();
        int peach = b.peach(9);
        if (peach > 0){
系统输出“当前桃子还剩”加上桃子的数量 peach 。
        }else {
你输入的天数不正确。请输入天数,这个天数需在 1 到 10 天之间。
        }
        }
        }
class B{
    public int peach(int day){
        if (day == 10){
            return 1;
        } else if (day >= 1 && day <= 9){
            return (peach(day + 1) + 1) * 2;
        }else {
            return -1;
        }
    }
}

你可能想看:
« 上一篇
下一篇 »

相关推荐

java中什么是冒泡,冒泡算法

2026年09月06日

27阅读

java中冒号,java双冒号

2026年09月06日

26阅读

java中的->,java中的是什么意思

2026年09月06日

24阅读

java中的super用法,Java中super的说明

2026年09月06日

28阅读

java中反射的应用,java中反射的应用场景

2026年09月06日

25阅读

java中开关的定义,Java关键字有哪些

2026年09月06日

25阅读