一、流程图

graph TB
    A(开始) --> B(编写递归函数)
    B --> C(记录递归次数)
    C --> D(输出递归次数)
    D --> E(结束)

二、步骤及代码解析

  1. 编写递归函数

首先,我们需要编写一个递归函数,来实现递归的功能。下面是一个示例函数,用来计算斐波那契数列的第n个数。

public class RecursionExample {
    public int fibonacci(int n) {
        if (n <= 1) {
            return n;
        }
        return fibonacci(n-1) + fibonacci(n-2);
    }
}

在这个例子中,我们通过递归调用fibonacci函数来计算斐波那契数列的第n个数。当n小于等于1时,直接返回n。否则,返回fibonacci(n-1) + fibonacci(n-2)

  1. 记录递归次数

为了记录递归的次数,我们可以在递归函数中增加一个参数,用来表示当前递归的层级。在每一次递归调用时,将层级加1并传递给下一次递归。下面是修改后的示例函数。

public class RecursionExample {
    public int fibonacci(int n, int level) {
        System.out.println("递归层级:" + level);
        if (n <= 1) {
            return n;
        }
        return fibonacci(n-1, level+1) + fibonacci(n-2, level+1);
    }
}

在每一次递归调用时,我们打印出当前的递归层级。

  1. 输出递归次数

为了输出递归的次数,我们可以在递归函数的外部定义一个计数器,并在每一次递归调用时将计数器加1。最后,输出计数器的值即可。下面是修改后的示例函数。

public class RecursionExample {
    private int count = 0;
    
    public int fibonacci(int n, int level) {
        count++;
        System.out.println("递归层级:" + level);
        if (n <= 1) {
            return n;
        }
        return fibonacci(n-1, level+1) + fibonacci(n-2, level+1);
    }
    
    public int getCount() {
        return count;
    }
}

在每一次递归调用时,我们将计数器加1。在递归结束后,通过调用getCount方法可以获取到递归的次数。

下面是一个完整的示例代码:

public class RecursionExample {
    private int count = 0;
    
    public int fibonacci(int n, int level) {
        count++;
        System.out.println("递归层级:" + level);
        if (n <= 1) {
            return n;
        }
        return fibonacci(n-1, level+1) + fibonacci(n-2, level+1);
    }
    
    public int getCount() {
        return count;
    }
    
    public static void main(String[] args) {
        RecursionExample example = new RecursionExample();
        int result = example.fibonacci(5, 0);
        System.out.println("斐波那契数列的第5个数为:" + result);
        System.out.println("递归次数:" + example.getCount());
    }
}

在这个示例中,我们计算了斐波那契数列的第5个数,并输出了递归的次数。

三、甘特图

gantt
    title 记录递归的次数

    section 代码编写
    编写递归函数          :a1, 2022-01-01, 1d
    记录递归次数          :a2, after a1, 1d
    输出递归次数          :a3, after a2, 1d

    section 代码测试
    编写测试用例          :b1, after a3, 1d
    运行测试用例          :b2, after b1, 1d

四、序列图

sequenceDiagram
    participant 小白
    participant 经验