While implementing a recursive function, it often happens that we must resort to a separate &nbsp; ''helper function'' &nbsp; to handle the actual recursion.

This is usually the case when directly calling the current function would waste too many resources (stack space, execution time), causing unwanted side-effects, &nbsp; and/or the function doesn't have the right arguments and/or return values.

So we end up inventing some silly name like &nbsp; '''foo2''' &nbsp; or &nbsp; '''foo_helper'''. &nbsp; I have always found it painful to come up with a proper name, and see some disadvantages:

::* &nbsp; You have to think up a name, which then pollutes the namespace
::* &nbsp; Function is created which is called from nowhere else
::* &nbsp; The program flow in the source code is interrupted

Some languages allow you to embed recursion directly in-place. &nbsp; This might work via a label, a local ''gosub'' instruction, or some special keyword.

Anonymous recursion can also be accomplished using the &nbsp; [[Y combinator]].


;Task:
If possible, demonstrate this by writing the recursive version of the fibonacci function &nbsp; (see [[Fibonacci sequence]]) &nbsp; which checks for a negative argument before doing the actual recursion.
<br><br>
