update meta data
This commit is contained in:
parent
f3a896c724
commit
90e15ed6ce
3307 changed files with 1674 additions and 7 deletions
15
Task/Anonymous-recursion/00DESCRIPTION
Normal file
15
Task/Anonymous-recursion/00DESCRIPTION
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
While implementing a recursive function, it often happens that we must resort to a separate "helper function" 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), cause unwanted side-effects, and/or the function doesn't have the right arguments and/and return values.
|
||||
|
||||
So we end up inventing some silly name like "foo2" or "foo_helper". I have always found it painful to come up with a proper name, and see a quite some disadvantages:
|
||||
|
||||
* You have to think up a name, which then pollutes the namespace
|
||||
* A function is created which is called from nowhere else
|
||||
* The program flow in the source code is interrupted
|
||||
|
||||
Some languages allow you to embed recursion directly in-place. This might work via a label, a local ''gosub'' instruction, or some special keyword.
|
||||
|
||||
Anonymous recursion can also be accomplished using the [[Y combinator]].
|
||||
|
||||
If possible, demonstrate this by writing the recursive version of the fibonacci function (see [[Fibonacci sequence]]) which checks for a negative argument before doing the actual recursion.
|
||||
Loading…
Add table
Add a link
Reference in a new issue