java - 递归方法打印 4 次

标签 java recursion

所以我正在努力学习如何通过Java利用递归。我编写了一个简单的程序,将 1 和 n 之间的所有数字相加,它看起来可以完成它的工作。我感到困惑的是 print 语句,它打印了 4 次(对于解决方案的每个较小部分的每个结果),并且我很困惑如果再次调用该方法并且条件尚未满足,它如何到达 print 语句。我知道可以通过在 main 方法中创建一个 int 变量并将返回值分配给它来规避这一点。

public static void main(String[] args) {

    int sum = recursiveCall(5);
}

public static int recursiveCall(int num) {

    int sum = 0;

    if(num == 1) {

        sum = 1;
        System.out.println(sum);
        return sum;
    }
    else {

        sum = recursiveCall(num - 1) + num;
    }

    // Notice it prints out all results of sum, not just the final value.
    System.out.println(sum);

    return sum;
}

最佳答案

我画了一个序列图,希望这可以解释递归过程。

递归有一个追溯过程,在调用递归方法之前,下一个命令将被插入调用堆栈。 所以我们可以简单地说,System.out.println将在recursiveCall之前被推送到调用堆栈,然后在recursiveCall返回后,主进程将继续堆栈顶部的命令是 System.out.println

The Process of Recursion

关于java - 递归方法打印 4 次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45395773/

相关文章:

应用程序的Java控制台和GUI模式?

c - 递归搜索和插入二叉树

c++ - 递归函数中奇怪的返回行为

scala - 字谜递归Scala

c - 使用递归的解决方案数量

java - 使用 Java 在两个或多个套接字之间执行零复制数据传输

java - Jersey:硬编码 POST/PUT ObjectMapper,不需要 Content-Type header

java - 如何实用地删除 android 中的 chrome 缓存

json - 使用递归更改 json 中的值

java - 找不到运行应用程序模块时出错