FACTOID # 26: Delaware is the latchkey kid capital of America, with 71.8% of households having both parents in the labor force.
 
 Home   Encyclopedia   Statistics   States A-Z   Flags   Maps   FAQ   About 
   
 
WHAT'S NEW
RELATED ARTICLES
People who viewed "Recursion" also viewed:
 

SEARCH ALL

FACTS & STATISTICS    Advanced view

Search encyclopedia, statistics and forums:

 

 

(* = Graphable)

 

 


Encyclopedia > Recursion
A visual form of recursion known as the Droste effect.
A visual form of recursion known as the Droste effect.

Recursion, in mathematics and computer science, is a method of defining functions in which the function being defined is applied within its own definition. 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 almost parallel with each other the nested images that occur are a form of recursion. Recursion is Tony Ballantynes first novel. ... A common method of simplification is to divide a problem into subproblems of the same type. ... See: Recursion Recursively enumerable language Recursively enumerable set Recursive filter Recursive function Recursive set Primitive recursive function This is a disambiguation page — a list of pages that otherwise might share the same title. ... This article is about the concept of recursion. ... Image File history File links Droste. ... Image File history File links Droste. ... The Droste effect is a Dutch term for a specific kind of recursive picture[1], one that in heraldry is termed mise en abyme. ... For other meanings of mathematics or uses of math and maths, see Mathematics (disambiguation) and Math (disambiguation). ... Computer science, or computing science, is the study of the theoretical foundations of information and computation and their implementation and application in computer systems. ... Look up Function in Wiktionary, the free dictionary. ...

Contents

Formal definitions of recursion

In mathematics and computer science, recursion specifies (or constructs) a class of objects or methods (or an object from a certain class) by defining a few very simple base cases or methods (often just one), and defining rules to break down complex cases into simpler cases. For other meanings of mathematics or uses of math and maths, see Mathematics (disambiguation) and Math (disambiguation). ... Computer science, or computing science, is the study of the theoretical foundations of information and computation and their implementation and application in computer systems. ...


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

  • One's parents are one's ancestors (base case);
  • The parents of any ancestor are also ancestors of the person under consideration (recursion step).

It is convenient to think that a recursive definition defines objects in terms of "previously defined" objects of the class to define. A parent is a father or mother; one who begets or one who gives birth to or nurtures and raises a child; a relative who plays the role of guardian // Mother This article or section does not cite its references or sources. ... An ancestor is a parent or (recursively) the parent of an ancestor (i. ...


Definitions such as these are often found in mathematics. For example, the formal definition of natural numbers in set theory is: 1 is a natural number, and each natural number has a successor, which is also a natural number. In mathematics, a natural number can mean either an element of the set {1, 2, 3, ...} (i. ...


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 the simpler problem(s), 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, 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." Andrew Plotkin, also known as Zarf, is an important figure in the modern interactive fiction community. ... Douglas Richard Hofstadter (born February 15, 1945 in New York, New York) is an American academic. ...


Examples of mathematical objects often defined recursively are functions, sets, and especially fractals. Graph of example function, The mathematical concept of a function expresses the intuitive idea of deterministic dependence between two quantities, one of which is viewed as primary (the independent variable, argument of the function, or its input) and the other as secondary (the value of the function, or output). A... In mathematics, a set can be thought of as any collection of distinct objects considered as a whole. ... The boundary of the Mandelbrot set is a famous example of a fractal. ...


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. For the journal, see Linguistics (journal). ... Map of South Asia (see note) This article deals with the geophysical region in Asia. ... Indian postage stamp depicting (2004), with the implication that he used (पाणिनि; IPA ) was an ancient Indian grammarian from Gandhara (traditionally 520–460 BC, but estimates range from the 7th to 4th centuries BC). ... The 5th century BC started the first day of 500 BC and ended the last day of 401 BC. // The Parthenon of Athens seen from the hill of the Pnyx to the west. ... For the rules of English grammar, see English grammar and Disputes in English grammar. ... Sanskrit ( , for short ) is a classical language of India, a liturgical language of Hinduism, Buddhism, Sikhism, and Jainism, and one of the 23 official languages of India. ...


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 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. Avram Noam Chomsky (Hebrew: אברם נועם חומסקי Yiddish: אברם נועם כאמסקי) (born December 7, 1928) is an American linguist, philosopher, political activist, author, and lecturer. ... The English language is a West Germanic language that originates in England. ...


However, if "Dorothy met the Wicked Witch" can be analyzed as a simple sentence, then the recursive sentence "He 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. "He lived in the Jack-built house" is unusual, perhaps poetic sounding, but it is not clearly wrong.


The idea that recursion is necessary for the unlimited extension of a 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 and accepted linguistic doctrine that recursion is the only trait which differentiates human and animal communication and is currently under intense debate. For the journal, see Linguistics (journal). ... Daniel Everett is a linguistics professor at the University of Manchester. ... Pirahã (also Pirahá, Pirahán) is a language spoken by the Pirahã — an indigenous people of Amazonas, Brazil, who live along the Maici river, a tributary of the Amazon. ...


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 humor

A common geeky joke (for example recursion in the Jargon File) is the following "definition" of recursion. The word geek is a slang term, noting individuals as a peculiar or otherwise dislikable person, especially one who is perceived to be overly intellectual.[1] Formerly, the term referred to a carnival performer often billed as a wild man whose act usually includes biting the head off a live... The Jargon File is a glossary of hacker slang. ...

Recursion
See "Recursion".

Another example occurs in Kernighan and Ritchie's "The C Programming Language." The following index entry is found on page 269: This article is about the concept of recursion. ...

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

This is a parody on references in dictionaries, which in some careless cases may lead to circular definitions. Jokes often have 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 (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. A variation is: A circular definition is one that assumes a prior understanding of the term being defined. ...

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

which actually does terminate, as soon as the reader "gets it". This article is about the concept of recursion. ...


Other examples are recursive acronyms, such as GNU, PHP or TTP (Dilbert; "The TTP Project"). A recursive acronym (or occasionally recursive initialism) is an abbreviation which refers to itself in the expression for which it stands. ... GNU (pronounced ) is a computer operating system composed entirely of free software. ... For other uses, see PHP (disambiguation). ... Dilbert (first published April 16, 1989) is an American comic strip written and drawn by Scott Adams. ...


Recursion in mathematics

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

Image File history File links Sierpinski_Triangle. ... Image File history File links Sierpinski_Triangle. ... Sierpinski triangle The Sierpinski triangle, also called the Sierpinski gasket, is a fractal, named after Wacław Sierpiński who described it in 1916. ... In mathematics, especially in geometry and group theory, a lattice in Rn is a discrete subgroup of Rn which spans the real vector space Rn. ...

Recursively defined sets

  • Example: the natural numbers

The canonical example of a recursively defined set is given by the natural numbers: Natural number can mean either a positive integer (1, 2, 3, 4, ...) or a non-negative integer (0, 1, 2, 3, 4, ...). Natural numbers have two main purposes: they can be used for counting (there are 3 apples on the table), or they can be used for ordering (this is...

1 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.
  • Example: The set of true reachable propositions

Another interesting example is the set of all true "reachable" propositions in an axiomatic system. In mathematics, an axiomatic system is any set of axioms from which some or all axioms can be used in conjunction to logically derive theorems. ...

  • 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. In mathematical logic, Gödels incompleteness theorems, proved by Kurt Gödel in 1931, are two theorems stating inherent limitations of all but the most trivial formal systems for arithmetic of mathematical interest. ...


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


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. Graph of example function, The mathematical concept of a function expresses the intuitive idea of deterministic dependence between two quantities, one of which is viewed as primary (the independent variable, argument of the function, or its input) and the other as secondary (the value of the function, or output). A... A tiling with squares whose sides are successive Fibonacci numbers in length A Fibonacci spiral, created by drawing arcs connecting the opposite corners of squares in the Fibonacci tiling shown above – see golden spiral. ...


A famous recursive function is the Ackermann function which, unlike the Fibonacci sequence, cannot be expressed without recursion. In recursion theory, the Ackermann function or Ackermann-Péter function is a simple example of a general recursive function that is not primitive recursive. ...


Recursive proofs

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.


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 with compass and straightedge -- both puzzles that fascinated the ancients. A number of ancient problems in geometry involve the construction of lengths or angles using only an idealized ruler and compass, or more properly a straightedge and compass. ...


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). In mathematics and computer science, dynamic programming is a method of solving problems exhibiting the properties of overlapping subproblems and optimal substructure (described below) that takes much less time than naive methods. ... In mathematics, the term optimization, or mathematical programming, refers to the study of problems in which one seeks to minimize or maximize a real function by systematically choosing the values of real or integer variables from within an allowed set. ... A Bellman equation (also known as a dynamic programming equation), named after its discoverer, Richard Bellman, is a necessary condition for optimality associated with the mathematical optimization method known as dynamic programming. ...


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. A common method of simplification is to divide a problem into subproblems of the same type. ... “Programming” redirects here. ... In computer science, divide and conquer (D&C) is an important algorithm design paradigm. ... In mathematics and computer science, dynamic programming is a method of solving problems exhibiting the properties of overlapping subproblems and optimal substructure (described below) that takes much less time than naive methods. ...


Recursion in computer programming is exemplified when a function is defined in terms of itself. 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. A parser is a computer program or a component of a program that analyses the grammatical structure of an input, with respect to a given formal grammar, a process known as parsing. ...


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. In mathematics, a recurrence relation, also known as a difference equation, is an equation which defines a sequence recursively: each term of the sequence is defined as a function of the preceding terms. ...


A classic example of recursion is the definition of the factorial function, given here in C code: For factorial rings in mathematics, see unique factorisation domain. ...

 unsigned int factorial(unsigned int n) { if (n <= 1) return 1; 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 defines a function in terms of itself. ...


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. It has been claimed that recursive algorithms are easier to understand because they do not contain the clutter (e.g., extra variables) associated with looping algorithms. There is no experimental evidence for this claim.


It is often possible to replace a recursive call with a simple loop, as the following example of factorial shows:

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

An example of recursive algorithm is procedure that processes (does something with) all the nodes of a tree data structure: In computer science, a tree is a widely-used computer data structure that emulates a tree structure with a set of linked nodes. ...

 void ProcessTree(node x) { unsigned int i = 0; while (i < x.count) { ProcessTree(x.children[i]); i++; } ProcessNode(x); // now perform the operation with the node itself } 

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 (i.e. sub-trees of the given tree), until reaching the base case that is node with no child nodes (i.e. tree having no branches usually called "leaf"). Recursion in computer programming defines a function in terms of itself. ...


Tree data structure itself can be defined recursively (and so predestinated for recursive processing) like this: In computer science, a tree is a widely-used computer data structure that emulates a tree structure with a set of linked nodes. ...

 typedef struct { unsigned int count; node* children; } node 

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) such that Set theory is the mathematical theory of sets, which represent collections of abstract objects. ...

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

for any natural number n.


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).

you should consider N union {0} as a domain of F. Mathematical induction is a method of mathematical proof typically used to establish that a given statement is true of all natural numbers. ... ↔ ⇔ ≡ logical symbols representing iff. ...


Proof of existence

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

Some common recurrence relations are:

For factorial rings in mathematics, see unique factorisation domain. ... In mathematics, the Fibonacci numbers form a sequence defined recursively by: In words: you start with 0 and 1, and then produce the next Fibonacci number by adding the two previous Fibonacci numbers. ... In combinatorial mathematics, the Catalan numbers form a sequence of natural numbers that occur in various counting problems, often involving recursively defined objects. ... For other senses of this word, see interest (disambiguation). ... A model set of the Towers of Hanoi (with 8 disks) An animated solution of the Tower of Hanoi puzzle for T(4,3). ... In recursion theory, the Ackermann function or Ackermann-Péter function is a simple example of a general recursive function that is not primitive recursive. ... A childs first birthday party. ...

See also

In computability theory the Church-Turing thesis, Churchs thesis, Churchs conjecture or Turings thesis, named after Alonzo Church and Alan Turing, is a hypothesis about the nature of mechanical calculation devices, such as electronic computers. ... A circular definition is one that assumes a prior understanding of the term being defined. ... Continuous predicate is a term coined by Charles Sanders Peirce (1839-1914) to describe a special type of relational predicate that results as the limit of a recursive process of hypostatic abstraction. ... In computability theory, course-of-values recursion is a technique for defining number-theoretic functions by recursion. ... In computer science a formal language is called recursive or decidable if there exists an algorithm to decide for any given string w over the alphabet of the language, if w belongs to the language or not. ... In computability theory a countable set is called recursive, computable or decidable if we can construct an algorithm which terminates after a finite amount of time and decides whether a given element belongs to the set or not. ... The Droste effect is a Dutch term for a specific kind of recursive picture[1], one that in heraldry is termed mise en abyme. ... In mathematics and computer science, dynamic programming is a method of solving problems exhibiting the properties of overlapping subproblems and optimal substructure (described below) that takes much less time than naive methods. ... A fixed point combinator (or fixed-point operator) is a higher-order function which computes a fixed point of other functions. ... An infinite loop is a sequence of instructions in a computer program which loops endlessly, either due to the loop having no terminating condition or having one that can never be met. ... Infinitism is a theory in epistemology, the branch of philosophy that treats of the possibility, nature, and means of knowledge. ... In mathematics, iterated functions are the objects of study in fractals and dynamical systems. ... Mise en abyme (also written, mise en abîme) has several meanings in the realms of creative arts and literary theory. ... In computability theory, primitive recursive functions are a class of functions which form an important building block on the way to a full formalization of computability. ... Recursionism means a variety of things to different people. ... A recursive acronym (or occasionally recursive initialism) is an abbreviation which refers to itself in the expression for which it stands. ... It has been suggested that this article or section be merged into computable function. ... A computer program or routine is described as reentrant if it can be safely called recursively or from multiple processes. ... A self-reference occurs when an object refers to itself. ... M.C. Escher - Drawing Hands, 1948. ... In computer science, tail recursion (or tail-end recursion) is a special case of recursion in which the last operation of the function is a recursive call. ... A model set of the Towers of Hanoi (with 8 disks) An animated solution of the Tower of Hanoi puzzle for T(4,3). ... For the usage of this term in Turing reductions, see Turing complete set. ... Turtles all the way down. ... The Viable Systems Model, or VSM is a model of the organisational structure of any viable system. ...

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. 

In mathematics and computer science, recursion is a particular way of specifying (or constructing) a class of objects (or an object from a certain class) with the help of a reference to other objects of the class: a recursive definition defines objects in terms of the already defined objects of...

External links

Look up recursion, recursivity in Wiktionary, the free dictionary.

  Results from FactBites:
 
Recursion - Wikipedia, the free encyclopedia (1812 words)
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.
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 (or lack of the initial state, if to look at it from an opposite point of view).
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 - definition of recursion in Encyclopedia (1212 words)
In mathematics and computer science, recursion is a particular way of specifying (or constructing) a class of objects (or an object from a certain class) with the help of a reference to other objects of the class: a recursive definition defines objects in terms of the already defined objects of the class.
Recursion is deeply embedded in the theory of computation, with the theoretical equivalence of recursive functions and Turing machines at the foundation of ideas about the universality of the modern computer.
This one is also the shortest possible example of an erroneous recursive definition of an object, an error being the absence of the termination condition (or lack of the intial state, if to look at it from an opposite point of view).
  More results at FactBites »

 
 

COMMENTARY     


Share your thoughts, questions and commentary here
Your name
Your comments

Want to know more?
Search encyclopedia, statistics and forums:

 


Press Releases |  Feeds | Contact
The Wikipedia article included on this page is licensed under the GFDL.
Images may be subject to relevant owners' copyright.
All other elements are (c) copyright NationMaster.com 2003-5. All Rights Reserved.
Usage implies agreement with terms, 1022, m