-4

逐行解释下面给出的函数。

在递归函数中,它调用了自身两次。任何人都可以像这个[问题]中给出的那样详细解释功能吗?这里的区别在于,在递归函数体中它会调用自己两次。

这是代码片段:

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);       

 }

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

一些问题的解释说我们必须堆叠值,那么如何为这个函数堆叠值?

4

1 回答 1

2

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

基本上,如果您在脑海中走过它并“玩电脑”,它将完全按照您的预期执行

于 2013-06-09T21:28:54.787 回答