Go to » Web - QA - Dictionary - Encyclopedia - Images
 Web Opens New Window. Results 1 - 10 of about 7,850,000 for Recursion 



Recursion - Wikipedia, the free encyclopedia

  
Recursion, in mathematics and computer science, is a method of defining functions in which the function being defined is applied within its own ...
http://en.wikipedia.org/wiki/Recursion

Recursion (computer science) - Wikipedia, the free encyclopedia

  
Recursion in computer science is a method where the solution to a ... "The power of recursion evidently lies in the possibility of defining an infinite set of ...
http://en.wikipedia.org/wiki/Recursion_(computer_science)

recursion: Definition from Answers.com

  
recursion n. Mathematics An expression, such as a polynomial, each term of which is determined by application of a formula to preceding terms
http://www.answers.com/topic/recursion

Haskell/Recursion - Wikibooks, collection of open-content ...

  
Recursion is a clever idea which plays a central role in Haskell (and computer science in general): namely, recursion is the idea of using a given ...
http://en.wikibooks.org/wiki/Haskell/Recursion

Recursion

  
RECURSION RULE #1 *** Every recursive method must have a base case -- a condition under which no recursive call is made -- to prevent infinite recursion. ...
http://pages.cs.wisc.edu/~vernon/cs367/notes/6.RECURSION.html

Java Recursion with examples

  
Simply put, recursion is when a function calls itself. That is, in the course of the function definition there is a call to that very same function. ...
http://danzig.jct.ac.il/java_class/recursion.html

Recursion - Definition

  
Definition of Recursion in the Online Dictionary. Meaning of Recursion. Information about Recursion in the online English dictionary and encyclopedia.
http://www.wordiq.com/definition/Recursion

Recursion

  
tail recursion occurs when the last operation of the function is the only ... A Recursion CheckList. To be sure that a recursive method will work ...
http://www.und.edu/dept/csci/twiggen/cs161/fall08/recursion.pdf

Recursion

  
How recursion helps simplify some hard problems. Note: This is a fairly advanced topic and for most applications you don't need to know anything about it. ...
http://www.freenetpages.co.uk/hp/alan.gauld/tutrecur.htm

Recursion

  
Recursion. Great fleas have little fleas. upon their backs to bite 'em, ... Recursion. A programming technique in which a. program or routine calls itself to. perform ...
http://www.cs.bgsu.edu/maner/335/lecture6.pdf
 MORE WEB RESULTS »  

 Questions 'n' Answers about 'Recursion' Opens New Window.

Q.Is there a recursion formula i can use to solve this integration by parts problem?Related Search:
Mathematics
 I have this problem: integrate: x^7cos(x^4)dx I was wondering if there was a recursion formula I could use to simplify the process of solving this problem. Thanks!
A.∫x^7cos(x^4)dx (x^3)(x^4)cos(x^4)dx x^4 = t 4x^3 dx = dt ∫x^7cos(x^4)dx substitue to get = (1/8)∫tcostdt use by parts with u = t and v' = cost ∫uv' = uv - ∫u' v = (1/8) [tsint - ∫sint] = (1/8) [tsint + cost] + c = (1/4) (x^4)(sinx^4) + (1/4)(cosx^4) + c
  

Q.How to reverse a doubly linked list using recursion in C language?Related Search:
Programming & Design
 Please help me in writing the code for reversing a doubly linked list using recursion in C language.
A.This seems like it could be a mindbender, with plenty of opportunities to get pointers hopelessly tangled, especially with recursion involved. However, it's simpler than you might think. Given a struct listNode, defined the usual way with prev and next pointers, including any data you want, the reverse function is: struct listNode *reverse(struct listNode *p) {     if (p == NULL) return p;     swap(&(p->next), &(p->prev));     if (p->prev == NULL) return p;     return reverse(p->prev); } I'm including the (p == NULL) check just in case a null pointer is passed in initially, it'll never be true in a recursive call. The swap function is: void swap(struct listNode **p, struct listNode **q) {     struct listNode *temp = *p;     *p = *q;     *q = temp; } If you have a pointer, head, to the start of your list, you can reverse the list with this call:     head = reverse(head); head will now point to what was the tail of the list, and all prev and next pointers will have been swapped, reversing the list.
  

Q.What are examples of times when recursion would be good to use as ooposed to loops (Java)?Related Search:
Programming & Design
 I am in a programming class, and I am quite ahead of it and I was wondering, if recusion is supposed to slow down you computer and stuff. Why use it? When would it be best to use recursion over an iterator
A.You don't always know when you need to stop.
  

Q.What is the difference between recursion and iteration?Related Search:
Mathematics
 What is the difference between recursion and iteration? In relation to maths and computers.
A.there is a very nice detailed discussion written here: [Link]  thus depending on the technicality of the denotation applied, there may be a difference in the two. but overall, they both mean to imply that there is a repetition in the process you may also visit this: [Link] >
  

Q.What are some pros and cons of using recursion?Related Search:
Programming & Design
 What would you tell a beginner in C# what some pros and cons are in recursion and when to use it and when not? The only thing I can think off as far as cons is that it takes a lot of memory and for me it seems more confusing than a loop structure would be. But I am sure there are better pros and cons.
A.Sometimes it's simpler to understand and is a shorter solution to use recursion, but it uses up more memory (because each time the function is called again it adds to the stack)... so I'd recommend just using loops wherever you can.
  

Q.How do I make a Java class that turns a string into pig latin using recursion and not loops?Related Search:
Programming & Design
 for my AP comp. science class i need to make a program that takes a string with multiple words, and turns each word into pig latin. the hard part is that i can only use recursion, not loops, can anyone help out?
A.Tell your teacher that's a bit contrived... there's no reason to use recursion for such a problem (unless perhaps you're programming in lisp). But since you MUST, look at defining the problem in terms of itself, for example: PigLatin("This is a sentence") = "isThay"+PigLatin("is a sentence") once you do that you find a recursive implementation just kinda falls into place.
  

Q.How do I make a recursion equation for this situation?Related Search:
Mathematics
 The book says "Suppose that you make an initial deposit of $100 into an account that pays 4% annual interest, compounded monthly." So how do I write a recursion equation for that? I'm confused by the compounded monthly thing because I know of it were compounded annually it would be Un = 1.04U(n-1). Thanks!
A.Capital=100(1+0.04/12)^t with t expressed in month so capital at month (n) = capital at month(n-1)*(1+0.04/12)
  
 Dictionary Opens New Window.
4 definitions found for Recursion:

From The Collaborative International Dictionary of English v.0.48:

Recursion \Re*cur"sion\ (-sh?n), n. [L. recursio. See Recur.]
   The act of recurring; return. [Obs.] --Boyle.
   [1913 Webster]


From WordNet (r) 2.0:

recursion
     n : (mathematics) an expression such that each term is generated
         by repeating a particular mathematical operation


From Jargon File (4.3.1, 29 Jun 2001):

recursion n. See recursion. See also tail recursion.



From The Free On-line Dictionary of Computing (27 SEP 03):

recursion
     
        <mathematics, programming> When a function (or procedure)
        calls itself.  Such a function is called "recursive".  If the
        call is via one or more other functions then this group of
        functions are called "mutually recursive".
     
        If a function will always call itself, however it is called,
        then it will never terminate.  Usually however, it first
        performs some test on its arguments to check for a "base case"
        - a condition under which it can return a value without
        calling itself.
     
        The canonical example of a recursive function is
        factorial:
     
        	factorial 0 = 1
        	factorial n = n * factorial (n-1)
     
        Functional programming languages rely heavily on recursion,
        using it where a procedural language would use iteration.
     
        See also recursion, recursive definition, tail recursion.
     
        [Jargon File]
     
        (1996-05-11)
     
     




 
 Encyclopedia Opens New Window.

A visual form of recursion known as the Droste effect. The woman in this image is holding an object which contains a smaller image of her holding the same object, which in turn contains a smaller image of herself holding the same object, and so forth.

Recursion, in mathematics and computer science, is a method of defining functions in which the function being defined is applied within its own definition; specifically it is defining an infinite statement using finite components. The term is also used more generally to describe a process of repeating objects in a self-similar way. For instance, when the surfaces of two mirrors are exactly parallel with each other the nested images that occur are a form of infinite recursion.

Contents

[edit] Formal definitions of recursion

Recursion in a VLC program on a pc

In mathematics and computer science, a class of objects or methods exhibit recursive behavior when they can be defined by two properties:

  1. A simple base case (or cases), and
  2. A set of rules which reduce all other cases toward the base case.

For example, the following is a recursive definition of a person's ancestors:

  • One's parents are one's ancestors (base case).
  • The parents of one's ancestors are also one's ancestors (recursion step).

The Fibonacci sequence is a classic example of recursion:

  • Fib(0) is 0 [base case]
  • Fib(1) is 1 [base case]
  • For all integers n > 1: Fib(n) is (Fib(n-1) + Fib(n-2)) [recursive definition]

A convenient mental model of recursion defines the recursive object (whether that object is an equation, an algorithm, an image, or a rule) in terms of "previously defined" objects of the same class. For example: How do you move a stack of 100 boxes? Answer: you move one box, remember where you put it, and then solve the smaller problem: how do you move a stack of 99 boxes? Eventually, you're left with the problem of how to move a single box, which you know how to do.

Many mathematical axioms are based upon recursive rules. For example, the formal definition of the natural numbers in set theory follows: 0 is a natural number, and each natural number has a successor, which is also a natural number. By this base case and recursive rule, one can generate the set of all natural numbers

A more humorous illustration goes: "To understand recursion, one must first understand recursion." Or perhaps more accurate is the following, from Andrew Plotkin: "If you already know what recursion is, just remember the answer. Otherwise, find someone who is standing closer to Douglas Hofstadter than you are; then ask him or her what recursion is."

Recursively defined mathematical objects include functions, sets, and especially fractals.

[edit] Recursion in language

The use of recursion in linguistics, and the use of recursion in general, dates back to the ancient Indian linguist Pāṇini in the 5th century BC, who made use of recursion in his grammar rules of Sanskrit.

Linguist Noam Chomsky theorizes that unlimited extension of a language such as English is possible only by the recursive device of embedding sentences in sentences. Thus, a chatty person 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.

However, if "Dorothy met the Wicked Witch" can be analyzed as a simple sentence, then the recursive sentence "She lived in the house Jack built" could be analyzed that way too, if "Jack built" is analyzed as an adjective, "Jack-built", that applies to the house in the same way "Wicked" applies to the Witch. "She lived in the Jack-built house" is unusual, perhaps poetic sounding, but it is not clearly wrong.

The idea that recursion is the essential property that enables language is challenged by linguist Daniel Everett in his work Cultural Constraints on Grammar and Cognition in Pirahã: Another Look at the Design Features of Human Language in which he hypothesizes that cultural factors made recursion unnecessary in the development of the Pirahã language. This concept challenges Chomsky's idea that recursion is the only trait which differentiates human and animal communication and is currently under intense debate.

Recursion in linguistics enables 'discrete infinity' by embedding phrases within phrases of the same type in a hierarchical structure. Without recursion, language does not have 'discrete infinity' and cannot embed sentences into infinity (with a 'Russian doll' effect). Everett contests that language must have discrete infinity, and that the Pirahã language - which he claims lacks recursion - is in fact finite. He likens it to the finite game of chess, which has a finite number of moves but is nevertheless very productive, with novel moves being discovered throughout history.

[edit] Recursion in plain English

Recursion is the process a procedure goes through when one of the steps of the procedure involves rerunning the 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.

[edit] Recursive humor

A common joke (for example recursion in the Jargon File) is the following "definition" of recursion.

Recursion
See "Recursion".

(Obviously, this recursion lacks the base case, so it will recur indefinitely.)

This is a parody on references in dictionaries, which in some cases may lead to circular definitions among related words. Jokes often have an element of wisdom, and also an element of misunderstanding. This one is also the shortest possible example of an erroneous recursive definition of an object, the error being the absence of the termination condition (or lack of the initial state, if looked at from an opposite point of view). Newcomers to recursion are often bewildered by its apparent circularity, until they learn to appreciate that a termination condition is key.

An example of this can be found by searching Google for the term "Recursion". Google cleverly puts the searcher in an endless cycle, of suggesting "Recursion" as the word they were trying to spell, even though that's exactly the input they just used.

A variation is:

Recursion
If you still don't get it, see: "Recursion".

which actually does terminate, as soon as the reader "gets it."

Another example occurs in Kernighan and Ritchie's "The C Programming Language." The following index entry is found on page 269:

recursion 86, 139, 141, 182, 202, 269

Other examples are recursive acronyms, such as GNU, PHP, YAML or HURD.

Some subtle jokes in mathematical recursive definitions include:

Factorial function seen in The Register defined as
fact(∞) -> ∞
fact(N) -> fact(N+1)/(N+1)
Fibonacci series
fib(∞) -> ∞
fib(N) -> fib(N+2) - fib(N+1)

[edit] Recursion in mathematics

A Sierpinski triangle—a confined recursion of triangles to form a geometric lattice.

[edit] Recursively defined sets

[edit] Example: the natural numbers

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

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

(The doubt with this definition is that we assume: 1.we understand the "+" operation and 2.n + 1 is not in current \mathbb{N}. These two assumptions mean that before we understand the natural numbers, we already know the "+" operation on them.)

[edit] 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.

(Note that determining whether a certain object is in a recursively defined set is not an algorithmic task.)

[edit] Functional recursion

A function may be partly defined in terms of itself. A familiar example is the Fibonacci number sequence: F(n) = F(n − 1) + F(n − 2). For such a definition to be useful, it must lead to values which are non-recursively defined, in this case F(0) = 0 and F(1) = 1.

A famous recursive function is the Ackermann function which, unlike the Fibonacci sequence, cannot be expressed without recursion.

[edit] Recursive proofs

Applying the standard technique of proof by cases to recursively-defined sets or functions as in the preceding sections yields structural induction, a powerful generalization of mathematical induction which is widely used to derive proofs in mathematical logic and computer science.

For instance, the standard way to define new systems of mathematics or logic is to define objects (such as "true" and "false", or "all natural numbers"), 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.

While the above example may seem unexciting, 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 with compass and straightedge—both puzzles that fascinated the ancients.

[edit] Recursive optimization

Dynamic programming is an approach to optimization which restates a multiperiod or multistep optimization problem in recursive form. The key result in dynamic programming is the Bellman equation, which writes the value of the optimization problem at an earlier time (or earlier step) in terms of its value at a later time (or later step).

[edit] 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. Divide and conquer serves as a top-down approach to problem solving, where problems are solved by solving smaller and smaller instances. A contrary approach is dynamic programming. This approach serves as a bottom-up approach, where problems are solved by solving larger and larger instances, until the desired size is reached.

A classic example of recursion is the definition of the factorial function, given here in C code:

 unsigned int factorial(unsigned int n) 
 {
     if (n <= 1) {
          return 1;
     } else {
          return n * factorial(n-1);
     }
 }

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

Recursion in computer programming is exemplified when a function is defined in terms of simpler, often smaller versions of itself. The solution to the problem is then devised by combining the solutions obtained from the simpler versions of the problem. One example application of recursion is in parsers 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.

Use of recursion in an algorithm has both advantages and disadvantages. The main advantage is usually simplicity. The main disadvantage is often that the algorithm may require large amounts of memory if the depth of the recursion is very large.

[edit] The recursion theorem

In set theory, this is a theorem guaranteeing that recursively defined functions exist. Given a set X, an element a of X and a function f: X \rightarrow X, the theorem states that there is a unique function F: N \rightarrow X (where N denotes the set of natural numbers including zero) such that

F(0) = a
F(n + 1) = f(F(n))

for any natural number n.

[edit] Proof of uniqueness

Take two functions F and G of domain N and codomain A such that:

F(0) = a
G(0) = a
F(n + 1) = f(F(n))
G(n + 1) = f(G(n))

where a is an element of A. We want to prove that F = G. Two functions are equal if they:

i. have equal domains/codomains;
ii. have the same graphic.
i. :ii. Mathematical induction: for all n in N, F(n) = G(n)? (We shall call this condition, say, Eq(n)):
1.Eq(0) if and only if F(0) = G(0) if and only if a = a.
2.Let n be an element of N. Assuming that Eq(n) holds, we want to show that Eq(n + 1) holds as well, which is easy because: F(n + 1) = f(F(n)) = f(G(n)) = G(n + 1).

[edit] Examples

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

Some common recurrence relations are:

[edit] See also

[edit] References

  • Johnsonbaugh, Richard (2004). Discrete Mathematics. Prentice Hall. ISBN 0-13-117686-2. 
  • Hofstadter, Douglas (1999). Gödel, Escher, Bach: an Eternal Golden Braid. Basic Books. ISBN 0-465-02656-7. 
  • Shoenfield, Joseph R. (2000). Recursion Theory. A K Peters Ltd. ISBN 1-56881-149-7. 
  • Causey, Robert L. (2001). Logic, Sets, and Recursion. Jones & Bartlett. ISBN 0-7637-1695-2. 
  • Cori, Rene; Lascar, Daniel; Pelletier, Donald H. (2001). Recursion Theory, Godel's Theorems, Set Theory, Model Theory. Oxford University Press. ISBN 0-19-850050-5. 
  • Barwise, Jon; Moss, Lawrence S. (1996). Vicious Circles. Stanford Univ Center for the Study of Language and Information. ISBN 0-19-850050-5.  - offers a treatment of corecursion.
  • Rosen, Kenneth H. (2002). Discrete Mathematics and Its Applications. McGraw-Hill College. ISBN 0-07-293033-0. 
  • Cormen, Thomas H., Charles E. Leiserson, Ronald L. Rivest, Clifford Stein (2001). Introduction to Algorithms. Mit Pr. ISBN 0-262-03293-7. 
  • Kernighan, B.; Ritchie, D. (1988). The C programming Language. Prentice Hall. ISBN 0-13-110362-8. 
  • Stokey, Nancy,; Robert Lucas; Edward Prescott (1989). Recursive Methods in Economic Dynamics. Harvard University Press. ISBN 0674750969. 

[edit] External links



All text is available under the terms of the GNU Free Documentation License. (See Copyrights for details.)
Wikipedia® is a registered trademark of the Wikimedia Foundation, Inc.
Privacy policy - About Wikipedia - Disclaimers - Fundraising
 
 Images Opens New Window.
File Size: 5.69921875k
Dimensions: 346 x 461 pixels
File Format: jpeg
File Size: 255.3994140625k
Dimensions: 540 x 720 pixels
File Format: jpeg
File Size: 71.69921875k
Dimensions: 613 x 485 pixels
File Format: png
File Size: 12.69921875k
Dimensions: 312 x 552 pixels
File Format: jpeg
File Size: 10.099609375k
Dimensions: 292 x 612 pixels
File Format: jpeg
File Size: 23.69921875k
Dimensions: 324 x 612 pixels
File Format: jpeg
File Size: 26.19921875k
Dimensions: 526 x 696 pixels
File Format: jpeg
File Size: 14.19921875k
Dimensions: 303 x 576 pixels
File Format: jpeg
File Size: 16.2998046875k
Dimensions: 511 x 400 pixels
File Format: jpeg
File Size: 3.19921875k
Dimensions: 450 x 850 pixels
File Format: png
File Size: 3.2998046875k
Dimensions: 450 x 850 pixels
File Format: png
File Size: 3.2998046875k
Dimensions: 450 x 850 pixels
File Format: png
 
 MORE IMAGES »  
Go to » Web - QA - Dictionary - Encyclopedia - Images