In Depth
See Also

Recursion

In mathematics Mathematics

Mathematics is the discipline that deals with concepts such as quantity [i], structure [i], space [i] a ... 

 and computer science, recursion specifies a class of objects or methods by defining a few very simple base cases or methods , and then defining rules to break down complex cases into simpler cases. For example, the following is a recursive definition of person's ancestors: *One's parents are one's ancestors ; *The parents of any ancestor are also ancestors of the person under consideration . It is convenient to think that a recursive definition defines objects in terms of "previously defined" objects of the class to define. Definitions such as these are often found in mathematics.

Discussions

  Discussion Features

   Ask a question about 'Recursion'

   Start a new discussion about 'Recursion'

   Answer questions about 'Recursion'

   'Recursion' discussion forum


Encyclopedia



In mathematics Mathematics

Mathematics is the discipline that deals with concepts such as quantity [i], structure [i], space [i] a ... 

 and computer science, recursion specifies a class of objects or methods by defining a few very simple base cases or methods , and then defining rules to break down complex cases into simpler cases.

For example, the following is a recursive definition of person's ancestors:
  • One's parents are one's ancestors ;
  • The parents of any ancestor are also ancestors of the person under consideration .


It is convenient to think that a recursive definition defines objects in terms of "previously defined" objects of the class to define.

Definitions such as these are often found in mathematics. For example, the formal definition of natural numbers in set theory is: 0 is a natural number, and each natural number has a successor, which is also a natural number.

Recursion in language

The use of recursion in linguistics, and the use of recursion in general, dates back to the ancient India Indian subcontinent

The Indian subcontinent is a peninsula landmass [i] of the Asia [i]n continent [i] occupying the Indian Plate [i] ... 

n linguist  in the 5th century BC, who made use of recursion in his grammar rules of Sanskrit Sanskrit

The Sanskrit language is a classical language [i] of India [i], a liturgical language [i] ... 

.

Linguist Noam Chomsky Noam Chomsky

Avram Noam Chomsky is the Institute Professor [i] Emeritus [i] of linguistics [i] at the Massachusetts Institute of Technology [i] ... 

 theorizes that unlimited extension of a language such as English English language

English is a widely distributed language that originated in England [i] but is now the primary language ... 

 is possible only by the recursive device of embedding sentences in sentences. Thus, a chatty little girl may say, "Dorothy, who met the wicked Witch of the West in Munchkin Land where her wicked Witch sister was killed, liquidated her with a pail of water." Clearly, two simple sentences — "Dorothy met the Wicked Witch of the West in Munchkin Land" and "Her sister was killed in Munchkin Land" — can be embedded in a third sentence, "Dorothy liquidated her with a pail of water," to obtain a very verbose sentence.

Here is another, perhaps simpler way to understand recursive processes:

  1. Are we done yet? If so, return the results. Without such a termination condition a recursion would go on forever.
  2. If not, simplify the problem, solve those simpler problem, and assemble the results into a solution for the original problem. Then return that solution.


A more humorous illustration goes: "In order to understand recursion, one must first understand recursion." Or perhaps more accurate is the following due to Andrew Plotkin: "If you already know what recursion is, just remember the answer. Otherwise, find someone who is standing closer to Douglas Hofstadter Douglas Hofstadter

Douglas Richard Hofstadter is an American [i] academic. ... 

 than you are; then ask him or her what recursion is."


Examples of mathematical objects often defined recursively are functions, set Set

In mathematics [i], a set can be thought of as any collection [i] of distinct things considered as a who ... 

s, and especially fractal Fractal

In colloquial usage, a fractal is a shape that is recursively constructed or self-similar [i],... 

s.

Recursion in plain English

Recursion is the process a procedure goes through when one of the steps of the procedure involves rerunning the entire same procedure. A procedure that goes through recursion is said to be recursive. Something is also said to be recursive when it is the result of a recursive procedure.

To understand recursion, one must recognize the distinction between a procedure and the running of a procedure. A procedure is a set of steps that are to be taken based on a set of rules. The running of a procedure involves actually following the rules and performing the steps. An analogy might be that a procedure is like a menu in that it is the possible steps, while running a procedure is actually choosing the courses for the meal from the menu.

A procedure is recursive if one of the steps that makes up the procedure calls for a new running of the procedure. Therefore a recursive four course meal would be a meal in which one of the choices of appetizer, salad, entrée, or dessert was an entire meal unto itself. So a recursive meal might be potato skins, baby greens salad, chicken parmesan, and for dessert, a four course meal, consisting of crab cakes, Caesar salad, for an entrée, a four course meal, and chocolate cake for dessert, so on until each of the meals within the meals is completed.

A recursive procedure must complete every one of its steps. Even if a new running is called in one of its steps, each running must run through the remaining steps. What this means is that even if the salad is an entire four course meal unto itself, you still have to eat your entrée and dessert.

Recursive humour


A common geeky joke is the following "definition" of recursion.

Recursion

See "Recursion Recursion

In mathematics [i] and computer science [i], recursion specifies a class of objects or methods by defi... 

".

This is a parody on references in dictionaries, which in some careless cases may lead to circular definitions. Every joke has an element of wisdom, and also an element of misunderstanding. This one is also the second-shortest possible example of an erroneous recursive definition of an object, the error being the absence of the termination condition . Newcomers to recursion are often bewildered by its apparent circularity, until they learn to appreciate that a termination condition is key. A more correct version is:

Recursion

If you still don't get it; See: "Recursion Recursion

In mathematics [i] and computer science [i], recursion specifies a class of objects or methods by defi... 

".

Other examples are recursive acronyms, such as GNU GNU

GNU is a free [i] operating system [i] consisting of a kernel [i], libraries [i] ... 

, PHP PHP

* Paamayim Nekudotayim [i]
  • Standard PHP Library [i]

... 

 or TTP .

Another form of recusion humor is frequently found in films or animation, such as this , example.

Recursion in mathematics



Recursively defined sets

  • Example: the natural numbers

The canonical example of a recursively defined set is given by the natural numbers:

0 is in N
if n is in N, then n + 1 is in N
The set of natural numbers is the smallest set satisfying the previous two properties.


  • Example: The set of true reachable propositions

Another interesting example is the set of all true "reachable" propositions in an axiomatic system.

  • if a proposition is an axiom, it is a true reachable proposition.
  • if a proposition can be obtained from true reachable propositions by means of inference rules, it is a true reachable proposition.
  • The set of true reachable propositions is the smallest set of reachable propositions satisfying these conditions.


This set is called 'true reachable propositions' because: in non-constructive approaches to the foundations of mathematics, the set of true propositions is larger than the set recursively constructed from the axioms and rules of inference. See also Gödel's incompleteness theorems.

Functional Recursion

A function may be partly defined in terms of itself. A familiar example is the Fibonacci number Fibonacci number

In mathematics [i], the Fibonacci numbers form a sequence [i] defined recursively [i] by:
... 

 sequence: F = F + F. For such a definition to be useful, it must lead to values which are non-recursively defined, in this case F = 0 and F = 1.

A famous recursive function is the Ackermann function which, unlike the Fibonacci sequence, is rather difficult to express without recursion.

Recursive Proofs

The standard way to define new systems of mathematics or logic is to define objects , then define operations on these. These are the base cases. After this, all valid computations in the system are defined with rules for assembling these. In this way, if the base cases and rules are all proven to be calculable, then any formula in the mathematical system will also be calculable.

This sounds unexciting, but this type of proof is the normal way to prove that a calculation is impossible. This can often save a lot of time. For example, this type of proof was used to prove that the area of a circle is not a simple ratio of its diameter, and that no angle can be trisected Compass and straightedge

[Image:Pentagon construct.gif|thumb|right|Construction of a regular pentagon]] [i]
... 

 with compass and straightedge -- both puzzles that fascinated the ancients.

Recursion in computer science



A common method of simplification is to divide a problem into subproblems of the same type. As a computer programming technique, this is called divide and conquer and is key to the design of many important algorithms, as well as being a fundamental part of dynamic programming Dynamic programming

In computer science [i], dynamic programming is a method for reducing the runtime of algorithm [i]s exhi ... 

.

Recursion in computer programming is exemplified when a function is defined in terms of itself. One example application of recursion is in parser Parser

name = Parser
|logo = |caption = Parser logo
... 

s for programming languages. The great advantage of recursion is that an infinite set of possible sentences, designs or other data can be defined, parsed or produced by a finite computer program.

Recurrence relations are equations to define one or more sequences recursively. Some specific kinds of recurrence relation can be "solved" to obtain a non-recursive definition.

A classic example of recursion is the definition of the factorial Factorial

In mathematics [i], the factorial of a natural number [i] n is the product [i] of all positive [i] ... 

 function, given here in pseudocode:

function factorial


The function calls itself recursively on a smaller version of the input and multiplies the result of the recursive call by n, until reaching the base case, analogously to the mathematical definition of factorial.

An example of recursive algorithm is procedure that processes all the nodes of a tree data structure Tree (data structure)

In computer science, a tree is a widely-used computer data structure [i] that emulates a tree structure [i] ... 

:

procedure ProcessTree


To process the whole tree, procedure is called with root node representing the tree as an initial parameter. The procedure calls itself recursively on all child nodes of the given node , until reaching the base case that is node with no child nodes .

Tree data structure Tree (data structure)

In computer science, a tree is a widely-used computer data structure [i] that emulates a tree structure [i] ... 

 itself can be defined recursively like this:

struct node


struct tree


Tree is represented by its root node holding a list of child nodes.
Each child node again have its list of child nodes .
"Leaf" with empty list of child nodes is the base case of node.

The recursion theorem

In set theory, this is a theorem guaranteeing that recursively defined functions exist. Given a set , an element of and a function , the theorem states that there is a unique function such that
for any natural number .

Proof of uniqueness

Take two functions and of domain and codomain such that:

where is an element of . We want to prove that . Two functions are equal if they:

i. have equal domains/codomains;
ii. have the same graphic.


i. Done!
ii. Mathematical induction Mathematical induction

Mathematical induction is a method of mathematical proof [i] typically used to establish that a given st ... 

: for all in , ? :

1. if and only if  if and only if . Done!
2.Let be an element of . Assuming that holds, we want to show that holds as well, which is easy because: . Done!

you should consider N union as a domain of F.

Proof of existence

  • See Hungerford, "Algebra", first chapter on set theory.
  • Check out .


Some common recurrence relations are:
  • Factorial Factorial

    In mathematics [i], the factorial of a natural number [i] n is the product [i] of all positive [i] ... 

     --
  • Fibonacci numbers Fibonacci number

    In mathematics [i], the Fibonacci numbers form a sequence [i] defined recursively [i] by:

... 

 --
  • Catalan number Catalan number

    In combinatorial mathematics [i], the Catalan numbers form a sequence [i] of natural number [i]s that oc ... 

    s -- ,


  • Computing compound interest Interest

    Interest is the 'rent' paid to borrow money [i]. ... 

  • The tower of Hanoi Tower of Hanoi

    The Tower of Hanoi or Towers of Hanoi is a mathematical game [i] or puzzle [i]. ... 

  • Ackermann function
  • Population growth rate Population growth

    Population growth is change in population [i] over time, and can be quantified as the change in the numb ... 



See also

  • Church-Turing thesis
  • Continuous predicate
  • Decidable language
  • Decidable set
  • Droste effect Droste effect

    The Droste effect is a Dutch [i] term for a specific kind of recursive [i] picture [i] ... 

  • Fixed point combinator
  • Infinite loop
  • Infinitism
  • Iterated function
  • Mise en abyme
  • Primitive recursive function
  • Recursion Recursion

    In mathematics [i] and computer science [i], recursion specifies a class of objects or methods by defi... 

  • Recursionism
  • Recursive acronym
  • Recursive function
  • Self-reference Self-reference

    Self-reference is a phenomenon in natural [i] or formal languages [i] consisting in a sentence [i] ... 

  • Strange loop Strange loop

    A strange loop is a case of self-reference [i] which affects the original item, possibly causing a paradox [i] ... 

  • Tail recursion
  • Turing completeness
  • Turtles all the way down
  • Viable System Model
  • Recursion

References

      • - offers a treatment of corecursion.*

External links

  • - tutorial by Alan Gauld
  • Video PodCast by http://www.isallaboutmath.com using recursion to find a formula for triangular numbers.