在递归调用中检索函数顺序的最简单方法是什么.例如,如果我们有一个递归函数,它会一直调用自己,直到找到基本情况,然后一次返回一个函数.返回的第一个函数是0阶,第二个函数是1阶,依此类推......检索订单信息的简单方法是什么?比如说,当它是第三阶的功能时,我想做一些特别的事情.
编辑:我希望堆栈顶部的函数为零.
Edit2:我试图解决的问题是返回二叉树的顺序遍历的第n个元素.
如果您从一个看起来像这样的递归函数开始
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直到最后一次递归调用返回后才能找到.
| 归档时间: |
|
| 查看次数: |
79 次 |
| 最近记录: |