Hello bearophile,

My recursive functions sometimes need to keep a bit of state, for
example an integer that keeps the current "depth" of a tree structure
that I'm creating or scanning, normally in D I can define the function
like this:

/// Always use depth=0 at the first call

int foo1(int x, int depth=0) {

...

foo1(x, depth + 1);

...

}

The last argument depth must be zero when the function is not called
by itself, but I must rely on convention and code comments,

My method of choice is:

private int foo1(int x, int depth) { ... }
int foo1(int x) {return foo1(x,0); }

Good inlining might even make this exactly the same as your proposal.


Reply via email to