逐行解释下面给出的功能。
在递归函数中,它自称两次。任何人都可以详细解释函数,就像在[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);
}
我知道这里讨论了很多与递归相关的问题,但我无法在函数体中找到两次递归调用的问题。如何理解这样的递归函数。
一些问题解释说我们必须堆栈值,然后如何堆叠这个函数的值?
答案 0 :(得分:1)
想象一棵树,而不是想象一堆对函数的调用。对函数的第一次调用是树的根。对树的每个第一次递归调用将在左侧创建一个分支,第二次递归调用将在右侧创建一个分支。您将看到的是,左分支将是直线,直到达到基本情况,然后右分支将开始出现,每个分支向左生长,直到它们到达基本情况。
基本上它会完全像你期望的那样执行,如果你在头脑中走过它并“玩电脑”