获取递归调用中函数的顺序号

Kee*_*eto 3 java recursion

在递归调用中检索函数顺序的最简单方法是什么.例如,如果我们有一个递归函数,它会一直调用自己,直到找到基本情况,然后一次返回一个函数.返回的第一个函数是0阶,第二个函数是1阶,依此类推......检索订单信息的简单方法是什么?比如说,当它是第三阶的功能时,我想做一些特别的事情.

编辑:我希望堆栈顶部的函数为零.

Edit2:我试图解决的问题是返回二叉树的顺序遍历的第n个元素.

das*_*ght 5

如果您从一个看起来像这样的递归函数开始

void recursive(int p1, String p2, long p3) {
    ...
    if (someCondition) {
        recursive(nextP1, nextP2, nextP3);
    }
}
Run Code Online (Sandbox Code Playgroud)

把它改成这个:

void recursive(int p1, String p2, long p3, int level) {
    ...
    if (someCondition) {
        recursive(nextP1, nextP2, nextP3, level+1);
    }
}
Run Code Online (Sandbox Code Playgroud)

现在通过调用从零开始

recursive(initialP1, initialP2, initialP3, 0);
Run Code Online (Sandbox Code Playgroud)

level将指出recursive您之上的调用次数.

编辑:(零在顶部)

您还可以将函数转换为返回其级别以实现"零顶级"策略:

int recursive(int p1, String p2, long p3) {
    if (baseCase) {
        return 0;
    }
    ...
    int level = 0;
    if (someCondition) {
        level = 1+recursive(nextP1, nextP2, nextP3);
    }
    return level;
}
Run Code Online (Sandbox Code Playgroud)

请注意,在这种情况下,level直到最后一次递归调用返回后才能找到.