简单的递归示例 - 请帮助我理解递归

Joh*_*ohn 1 java math recursion

    public static int triple(int n)
    {
        if (n == 0)
            return 0;
        else
            total = 3 + triple(n-1);
    System.out.println(total);
    return total;
    }
Run Code Online (Sandbox Code Playgroud)

好的,所以我有一个简单的回忆示例,我似乎无法掌握,我希望有人能够让我逐步了解程序如何获得其输出.

这就是我认为会发生的事情.让我们说,n=5 所以程序循环和命中total = 3 + triple(5-1) 我认为将等于7 ..这是程序打印错误

3
6
9
12
15

所以...然后我认为三重必须在打印总数之前再次运行...我相信它确实如此,但我根本不明白它的总计是如何.

因为它看起来像这样:

3 + triple(4)
       3 + triple(3)
               3 + triple(2)
                       3 + triple(1)
                                =3
Run Code Online (Sandbox Code Playgroud)

有人可以解释一下,因为你我可以很失落!

Blu*_*eft 6

你解释它有些不对劲.它更像是这样的:

triple(5) = 3 + triple(4)
triple(4) = 3 + triple(3)
triple(3) = 3 + triple(2)
triple(2) = 3 + triple(1)
triple(1) = 3 + triple(0)
triple(0) = 0

现在想象一下triple(0),triple(1)等都是独立的变量,并解决triple(5)通过自己的方式工作了.