这是我对递归问题使用的以下代码

有人可以让我了解24的输出吗?

为了证明我的困惑,我认为输出应该是6,12,20,1

package Examples;

public class QuestionDemo {

public static void main(String[] args) {

    System.out.println(recCall(2));
}

public static int recCall(int num) {

    if (num == 5) {
        return 1;
    } else {
        return num * recCall(++num);
    }

}
}

最佳答案

您有4个递归调用
调用recCall(2)时的第一个
然后recCall(3),recCall(4)和recCall(5)
recCall(5)返回1
recCall(4)返回4 * 1
recCall(3)返回3 * 4 * 1
recCall(2)返回2 * 3 * 4 * 1 = 24

10-06 08:53