解释递归函数:如果它自己调用两次怎么办?

时间:2013-06-09 21:25:21

标签: java recursion

逐行解释下面给出的功能。

在递归函数中,它自称两次。任何人都可以详细解释函数,就像在[Question].中给出的那样。不同之处在于,在递归函数体中它会调用两次。

以下是代码段:

public static void fun(int n){

    if(n > 0){

        fun(--n);
        System.out.println(n);
        fun(--n);
    }
}

public static void main(String[] args){
      int a=3;
        fun(a);       

 }

我知道这里讨论了很多与递归相关的问题,但我无法在函数体中找到两次递归调用的问题。如何理解这样的递归函数。

一些问题解释说我们必须堆栈值,然后如何堆叠这个函数的值?

1 个答案:

答案 0 :(得分:1)

想象一棵树,而不是想象一堆对函数的调用。对函数的第一次调用是树的根。对树的每个第一次递归调用将在左侧创建一个分支,第二次递归调用将在右侧创建一个分支。您将看到的是,左分支将是直线,直到达到基本情况,然后右分支将开始出现,每个分支向左生长,直到它们到达基本情况。

基本上它会完全像你期望的那样执行,如果你在头脑中走过它并“玩电脑”