60:
1184:
already been checked for (immediately before the recursive step), it does not need to be checked for separately, but one does need to use a wrapper function for the case when the overall recursion starts with the base case itself. For example, in the factorial function, properly the base case is 0! = 1, while immediately returning 1 for 1! is a short circuit, and may miss 0; this can be mitigated by a wrapper function. The box shows
3357:
3947:
2630:
2530:
3823:; it is equivalent to an iterative algorithm, and the computation shown above shows the steps of evaluation that would be performed by a language that eliminates tail calls. Below is a version of the same algorithm using explicit iteration, suitable for a language that does not eliminate tail calls. By maintaining its state entirely in the variables
3102:
1214:
valid then recurse", as in considering leaf nodes rather than Null nodes as base cases in a tree. Because short-circuiting has a more complicated flow, compared with the clear separation of base case and recursive step in standard recursion, it is often considered poor style, particularly in academia.
834:
requires greater care. These generatively recursive functions can often be interpreted as corecursive functions – each step generates the new data, such as successive approximation in Newton's method – and terminating this corecursion requires that the data eventually satisfy some condition, which is
743:
Thus, the defining characteristic of a structurally recursive function is that the argument to each recursive call is the content of a field of the original input. Structural recursion includes nearly all tree traversals, including XML processing, binary tree creation and search, etc. By considering
532:
programming languages, and can be preferable to recursion when the desired size or precision of a program's output is unknown. In such cases the program requires both a definition for an infinitely large (or infinitely precise) result, and a mechanism for taking a finite portion of that result. The
1734:
Recursive algorithms are often inefficient for small data, due to the overhead of repeated function calls and returns. For this reason efficient implementations of recursive algorithms often start with the recursive algorithm, but then switch to a different algorithm when the input becomes small. An
4354:
Recursion is used in this algorithm because with each pass a new array is created by cutting the old one in half. The binary search procedure is then called recursively, this time on the new (and smaller) array. Typically the array's size is adjusted by manipulating a beginning and ending index.
4350:
for a single element by cutting the array in half with each recursive pass. The trick is to pick a midpoint near the center of the array, compare the data at that point with the data being searched and then responding to one of three possible conditions: the data is found at the midpoint, the data
1183:
making a recursive call – i.e., checking if the next call will be the base case, instead of calling and then checking for the base case. Short-circuiting is particularly done for efficiency reasons, to avoid the overhead of a function call that immediately returns. Note that since the base case has
1213:
Conceptually, short-circuiting can be considered to either have the same base case and recursive step, checking the base case only before the recursion, or it can be considered to have a different base case (one step removed from standard base case) and a more complex recursive step, namely "check
241:
The job of the recursive cases can be seen as breaking down complex inputs into simpler ones. In a properly designed recursive function, with each recursive call, the input problem must be simplified in such a way that eventually the base case must be reached. (Functions that are not intended to
2049:
faster than the recursive one. In functional languages, the overall time difference of the two implementations may be negligible; in fact, the cost of multiplying the larger numbers first rather than the smaller numbers (which the iterative version given here happens to do) may overwhelm any time
1721:
of the
Boolean && (AND) operators, so that the recursive call is made only if the node is valid (non-Null). Note that while the first term in the AND is a pointer to a node, the second term is a Boolean, so the overall expression evaluates to a Boolean. This is a common idiom in recursive
726:
typically decompose their arguments into their immediate structural components and then process those components. If one of the immediate components belongs to the same class of data as the input, the function is recursive. For that reason, we refer to these functions as (STRUCTURALLY) RECURSIVE
870:
On the basis of elegance, wrapper functions are generally approved, while short-circuiting the base case is frowned upon, particularly in academia. Hybrid algorithms are often used for efficiency, to reduce the overhead of recursion in small cases, and arm's-length recursion is a special case of
577:
Single recursion is often much more efficient than multiple recursion, and can generally be replaced by an iterative computation, running in linear time and requiring constant space. Multiple recursion, by contrast, may require exponential time and space, and is more fundamentally recursive, not
895:, the auxiliary function can be nested inside the wrapper function and use a shared scope. In the absence of nested functions, auxiliary functions are instead a separate function, if possible private (as they are not called directly), and information is shared with the wrapper function by using
4098:
1202:
algorithms; this is illustrated below for a depth-first search. Short-circuiting on a tree corresponds to considering a leaf (non-empty node with no children) as the base case, rather than considering an empty node as the base case. If there is only a single base case, such as in computing the
581:
Multiple recursion can sometimes be converted to single recursion (and, if desired, thence to iteration). For example, while computing the
Fibonacci sequence naively entails multiple iteration, as each value requires two previous values, it can be computed by single recursion by passing two
2792:
3525:
7195:
2638:
In the case of a function calling itself only once, instructions placed before the recursive call are executed once per recursion before any of the instructions placed after the recursive call. The latter are executed repeatedly after the maximum recursion has been reached.
95:
The power of recursion evidently lies in the possibility of defining an infinite set of objects by a finite statement. In the same manner, an infinite number of computations can be described by a finite recursive program, even if this program contains no explicit
3352:{\displaystyle {\begin{aligned}\operatorname {fact} (n)&=\operatorname {fact_{acc}} (n,1)\\\operatorname {fact_{acc}} (n,t)&={\begin{cases}t&{\mbox{if }}n=0\\\operatorname {fact_{acc}} (n-1,nt)&{\mbox{if }}n>0\\\end{cases}}\end{aligned}}}
5019:
Below is a simple definition for a binary tree node. Like the node for linked lists, it is defined in terms of itself, recursively. There are two self-referential pointers: left (pointing to the left sub-tree) and right (pointing to the right sub-tree).
845:
By contrast, generative recursion is when there is not such an obvious loop variant, and termination depends on a function, such as "error of approximation" that does not necessarily decrease to zero, and thus termination is not guaranteed without further
886:
Wrapper functions can be used to validate parameters (so the recursive function can skip these), perform initialization (allocate memory, initialize variables), particularly for auxiliary variables such as "level of recursion" or partial computations for
476:
This says that an expression is either a number, a product of two expressions, or a sum of two expressions. By recursively referring to expressions in the second and third lines, the grammar permits arbitrarily complicated arithmetic expressions such as
48:
3811:
gcd(111, 259) = gcd(259, 111 % 259) = gcd(259, 111) = gcd(111, 259 % 111) = gcd(111, 37) = gcd(37, 111 % 37) = gcd(37, 0) = 37
2094:
input. Some malware specifically targets a program's call stack and takes advantage of the stack's inherently recursive nature. Even in the absence of malware, a stack overflow caused by unbounded recursion can be fatal to the program, and
2210:
rather than function calls, a tail-recursive function such as gcd will execute using constant space. Thus the program is essentially iterative, equivalent to using imperative language control structures like the "for" and "while" loops.
3937:
The iterative algorithm requires a temporary variable, and even given knowledge of the
Euclidean algorithm it is more difficult to understand the process by simple inspection, although the two algorithms are very similar in their steps.
1259:
the recursive step. Alternatively, these can be considered a different form of base case and recursive step, respectively. Note that this requires a wrapper function to handle the case when the tree itself is empty (root node is Null).
238:. Neither equation by itself constitutes a complete definition; the first is the base case, and the second is the recursive case. Because the base case breaks the chain of recursion, it is sometimes also called the "terminating case".
369:
The code above specifies a list of strings to be either empty, or a structure that contains a string and a list of strings. The self-reference in the definition permits the construction of lists of any (finite) number of strings.
4891:
procedure defined below walks down the list until the list is empty (i.e., the list pointer has a value of NULL). For each node it prints the data element (an integer). In the C implementation, the list remains unchanged by the
4210:
hanoi(4) = 2×hanoi(3) + 1 = 2×(2×hanoi(2) + 1) + 1 = 2×(2×(2×hanoi(1) + 1) + 1) + 1 = 2×(2×(2×1 + 1) + 1) + 1 = 2×(2×(3) + 1) + 1 = 2×(7) + 1 = 15
3960:
The Towers of Hanoi is a mathematical puzzle whose solution illustrates recursion. There are three pegs which can hold stacks of disks of different diameters. A larger disk may never be stacked on top of a smaller. Starting with
2030:) that favor iterative looping constructs, there is usually significant time and space cost associated with recursive programs, due to the overhead required to manage the stack and the relative slowness of function calls; in
3977:
6913:
2677:
6918:
The logical reading frees the reader from needing to know how the clause is used to solve problems. The clause can be used top-down, as in Prolog, to reduce problems to subproblems. Or it can be used bottom-up (or
855:
In actual implementation, rather than a pure recursive function (single check for base case, otherwise recursive step), a number of modifications may be made, for purposes of clarity or efficiency. These include:
2424:; when the recursive call returns, it will branch directly on the previously saved return position. Therefore, in languages that recognize this property of tail calls, tail recursion saves both space and time.
4810:
As long as a programmer derives the template from a data definition, functions employ structural recursion. That is, the recursions in a function's body consume some immediate piece of a given compound value.
3398:
499:
A coinductive data definition is one that specifies the operations that may be performed on a piece of data; typically, self-referential coinductive definitions are used for data structures of infinite size.
2126:; though both recursive and iterative methods are used, they contrast with list traversal and linear search in a list, which is a singly recursive and thus naturally iterative method. Other examples include
8001:
1775:, iteration is preferred, particularly for simple recursion, as it avoids the overhead of function calls and call stack management, but recursion is generally used for multiple recursion. By contrast, in
2014:, although tail call elimination may be a feature that is not covered by a language's specification, and different implementations of the same language may differ in tail call elimination capabilities.
744:
the algebraic structure of the natural numbers (that is, a natural number is either zero or the successor of a natural number), functions such as factorial may also be regarded as structural recursion.
700:
Recursion is usually done by explicitly calling a function by name. However, recursion can also be done via implicitly calling a function based on the current context, which is particularly useful for
6368:
722:
Some authors classify recursion as either "structural" or "generative". The distinction is related to where a recursive procedure gets the data that it works on, and how it processes that data:
6067:
3107:
1191:
Short-circuiting is primarily a concern when many base cases are encountered, such as Null pointers in a tree, which can be linear in the number of function calls, hence significant savings for
6296:
4806:
The examples in this section illustrate what is known as "structural recursion". This term refers to the fact that the recursive procedures are acting on data that is defined recursively.
4798:. Recursive data structures can dynamically grow to a theoretically infinite size in response to runtime requirements; in contrast, the size of a static array must be set at compile time.
2198:
tail-recursive; because its recursive call is not in tail position, it builds up deferred multiplication operations that must be performed after the final recursive call completes. With a
6458:
528:
Corecursion is related to coinduction, and can be used to compute particular instances of (possibly) infinite objects. As a programming technique, it is used most often in the context of
6223:
6157:
8748:
5087:
Operations on the tree can be implemented using recursion. Note that because there are two self-referencing pointers (left and right), tree operations may require two recursive calls:
830:
Generatively recursive functions, in contrast, do not necessarily feed smaller input to their recursive calls, so proof of their termination is not necessarily as simple, and avoiding
570:. Standard examples of single recursion include list traversal, such as in a linear search, or computing the factorial function, while standard examples of multiple recursion include
513:
This is very similar to an inductive definition of lists of strings; the difference is that this definition specifies how to access the contents of the data structure—namely, via the
5991:
7907:
3717:
7971:
1722:
short-circuiting. This is in addition to the short-circuit evaluation of the
Boolean || (OR) operator, to only check the right child if the left child fails. In fact, the entire
6522:
6394:
6093:
2066:, and recursive algorithms tend to require more stack space than iterative algorithms. Consequently, these languages sometimes place a limit on the depth of recursion to avoid
270:(such as the number of terms to be added, in our series example) to provide a 'stopping criterion' that establishes the base case. Such an example is more naturally treated by
4162:
2909:
2194:
and hence do not build up any deferred operations. For example, the gcd function (shown again below) is tail-recursive. In contrast, the factorial function (also below) is
582:
successive values as parameters. This is more naturally framed as corecursion, building up from the initial values, while tracking two successive values at each step – see
152:
to have a size equal to the sum of the input sizes of all involved calls. It follows that, for problems that can be solved easily by iteration, recursion is generally less
7920:
3785:
7829:
1271:
there are 2−1 nodes and 2 Null pointers as children (2 for each of the 2 leaves), so short-circuiting cuts the number of function calls in half in the worst case.
91:
that call themselves from within their own code. The approach can be applied to many types of problems, and recursion is one of the central ideas of computer science.
4196:
3743:
2943:
2010:, may cause stack allocation that would not occur with the use of looping constructs; in these languages, a working iterative program rewritten in recursive form may
172:
tactic is to divide a problem into sub-problems of the same type as the original, solve those sub-problems, and combine the results. This is often referred to as the
2142:, but the programmer effort involved in managing the stack, and the complexity of the resulting program, arguably outweigh any advantages of the iterative solution.
3620:
8070:
3652:
2987:
This factorial function can also be described without using recursion by making use of the typical looping constructs found in imperative programming languages:
8005:
2158:. An alternative is to develop a replacement algorithm entirely based on non-recursive methods, which can be challenging. For example, recursive algorithms for
639:
Chains of three or more functions are possible; for example, function 1 calls function 2, function 2 calls function 3, and function 3 calls function 1 again.
8741:
1779:
recursion is preferred, with tail recursion optimization leading to little overhead. Implementing an algorithm using iteration may not be easily achievable.
2041:
As a concrete example, the difference in performance between recursive and iterative implementations of the "factorial" example above depends highly on the
180:
that stores the results of previously solved sub-problems (to avoid solving them repeatedly and incurring extra computation time), it can be referred to as
686:
are mutually recursing on each other. Similarly a set of three or more functions that call each other can be called a set of mutually recursive functions.
7900:
7622:
842:, structural recursion is when there is an obvious loop variant, namely size or complexity, which starts off finite and decreases at each recursive step.
4093:{\displaystyle \operatorname {hanoi} (n)={\begin{cases}1&{\mbox{if }}n=1\\2\cdot \operatorname {hanoi} (n-1)+1&{\mbox{if }}n>1\\\end{cases}}}
2420:
The significance of tail recursion is that when making a tail-recursive call (or any tail call), the caller's return position need not be saved on the
1825:
For an imperative language the overhead is to define the function, and for a functional language the overhead is to define the accumulator variable x.
6958:
5427:, therefore the concepts behind tree traversal are applicable to traversing a filesystem. More specifically, the code below would be an example of a
274:, where successive terms in the output are the partial sums; this can be converted to a recursion by using the indexing parameter to say "compute the
6721:) and searching the space of possible paths depth-first, one branch at a time. If it tries the second clause, and finitely fails to find a path from
8134:
2787:{\displaystyle \operatorname {fact} (n)={\begin{cases}1&{\mbox{if }}n=0\\n\cdot \operatorname {fact} (n-1)&{\mbox{if }}n>0\\\end{cases}}}
883:
is a function that is directly called but does not recurse itself, instead calling a separate auxiliary function which actually does the recursion.
8734:
8484:
8346:
6790:
5915:
615:
recursion occurs when a function is called not by itself but by another function that it called (either directly or indirectly). For example, if
1963:, although other methods may be used). Every recursive function can be transformed into an iterative function by replacing recursive calls with
8490:
6745:
4826:
Below is a C definition of a linked list node structure. Notice especially how the node is defined in terms of itself. The "next" element of
1726:
of these functions can be replaced with a single
Boolean expression in a return statement, but legibility suffers at no benefit to efficiency.
2980:))) = 4 × (3 × (2 × (1 × 1))) = 4 × (3 × (2 × 1)) = 4 × (3 × 2) = 4 × 6 = 24
2150:
Recursive algorithms can be replaced with non-recursive counterparts. One method for replacing recursive algorithms is to simulate them using
8995:
7893:
7800:
7750:
7731:
7245:
6535:
represents by what factor smaller the input is for the next level of recursion (i.e. the number of pieces you divide the problem into), and
8675:
8423:
7775:
7132:
7094:
3520:{\displaystyle \gcd(x,y)={\begin{cases}x&{\mbox{if }}y=0\\\gcd(y,\operatorname {remainder} (x,y))&{\mbox{if }}y>0\\\end{cases}}}
7673:
4802:"Recursive algorithms are particularly appropriate when the underlying problem or the data to be treated are defined in recursive terms."
525:—and what those contents may be, whereas the inductive definition specifies how to create the structure and what it may be created from.
2171:
6546:
represents the work that the function does independently of any recursion (e.g. partitioning, recombining) at each level of recursion.
8143:
7632:
7843:
7680:
7384:
7299:
7272:
7208:
7037:
2948:
This evaluation of the recurrence relation demonstrates the computation that would be performed in evaluating the pseudocode above:
1836:
by assigning to a loop index variable and accumulator variable, rather than by passing arguments and returning values by recursion:
4351:
at the midpoint is greater than the data being searched for, or the data at the midpoint is less than the data being searched for.
4283:
Although not all recursive functions have an explicit solution, the Tower of Hanoi sequence can be reduced to an explicit formula.
2174:, have been developed to avoid the drawbacks of recursion and have improved only gradually based on techniques such as collecting
8515:
8195:
8139:
7481:
2179:
1951:
in use today allow the direct specification of recursive functions and procedures. When such a function is called, the program's
4887:
data structure is defined recursively, procedures that operate on it can be implemented naturally as recursive procedures. The
8375:
8248:
8179:
8114:
8037:
7054:
6303:
4355:
The algorithm exhibits a logarithmic order of growth because it essentially divides the problem domain in half with each pass.
3363:
8553:
8316:
7946:
7706:
6932:
5923:
330:
An inductively defined recursive data definition is one that specifies how to construct instances of the data. For example,
7551:
7530:
5423:
is the only practical way to traverse and thus enumerate its contents. Traversing a filesystem is very similar to that of
3965:
disks on one peg, they must be moved to another peg one at a time. What is the smallest number of steps to move the stack?
9005:
8331:
8321:
8099:
3367:
2071:
2003:
7497:"Tricks of the trade: Recursion to Iteration, Part 2: Eliminating Recursion with the Time-Traveling Secret Feature Trick"
6744:
as universally quantified conditionals. For example, the recursive clause of the path-finding procedure is understood as
6002:
8896:
8881:
8715:
8695:
8625:
8568:
8530:
8520:
8480:
8405:
8341:
8311:
8238:
8227:
8124:
8104:
8042:
7425:
6994:
6228:
5886:
The "base case" scenario is that there will always be a fixed number of files and/or directories in a given filesystem.
2127:
538:
9010:
8670:
8433:
8400:
8295:
8271:
8233:
8213:
8109:
8018:
7996:
7981:
7433:
7148:
2027:
1999:
1956:
646:, which is a more symmetric term, though this is simply a difference of emphasis, not a different notion. That is, if
88:
52:
7405:
8951:
8825:
8815:
8795:
8617:
8603:
8510:
8470:
8395:
8301:
8281:
8148:
8027:
7961:
7792:
6399:
2087:
243:
6963:
6164:
6098:
758:
Many well-known recursive algorithms generate an entirely new piece of data from the given data and recur on it.
8830:
8710:
8475:
8385:
8365:
8351:
4791:
504:
260:
173:
2118:
Multiply recursive problems are inherently recursive, because of prior state they need to track. One example is
8690:
8650:
8593:
8525:
8263:
8094:
7511:
2023:
1995:
1833:
1718:
1185:
396:
5883:
The "rtraverse" method is an example of direct recursion, whilst the "traverse" method is a wrapper function.
125:) do not define any looping constructs but rely solely on recursion to repeatedly call code. It is proved in
8969:
8931:
8700:
8680:
8621:
8608:
8588:
8415:
8152:
8056:
8014:
6989:
3660:
3383:
2646:
of the print statements is reversed, which is due to the way the functions and statements are stored on the
2203:
407:; here is such a grammar, for a simple language of arithmetic expressions with multiplication and addition:
400:
2045:
used. In languages where looping constructs are preferred, the iterative version may be as much as several
1240:
recursive step: otherwise, check value of current node, return true if match, otherwise recurse on children
8775:
8660:
8635:
8629:
8573:
8535:
8223:
8218:
8170:
8065:
7966:
7938:
7929:
6948:
6928:
2139:
1968:
1772:
759:
734:
246:—are an exception to this.) Neglecting to write a base case, or testing for it incorrectly, can cause an
153:
118:
64:
31:
7496:
7462:
4790:
An important application of recursion in computer science is in defining dynamic data structures such as
510:
A stream of strings is an object s such that: head(s) is a string, and tail(s) is a stream of strings.
8835:
8805:
8562:
8558:
8500:
8452:
8022:
6953:
6474:
4795:
2067:
1991:
827:: intuitively, each recursive call receives a smaller piece of input data, until a base case is reached.
201:
83:
where the solution depends on solutions to smaller instances of the same problem. Recursion solves such
80:
7535:
7410:
7389:
6373:
6072:
404:
4112:
3090:
The imperative code above is equivalent to this mathematical definition using an accumulator variable
9015:
8946:
8921:
8866:
8705:
8685:
8645:
8447:
8306:
8175:
8162:
7916:
6984:
3831:
and using a looping construct, the program avoids making recursive calls and growing the call stack.
2031:
1948:
1776:
824:
812:
717:
587:
254:
126:
114:
4004:
3428:
3238:
2865:
2704:
1771:. Which approach is preferable depends on the problem under consideration and the language used. In
8956:
8941:
8886:
8640:
8578:
8390:
8370:
8356:
8088:
7956:
7951:
7237:
6979:
6741:
5899:
4785:
3593:
3379:
2856:
2103:
2046:
1987:
1975:
1952:
1264:
820:
794:
770:
705:
695:
325:
314:
181:
134:
9000:
8974:
8876:
8871:
8785:
8457:
8410:
8380:
8326:
8185:
8084:
7976:
7885:
7873:
7853:
7825:
5428:
5404:
3749:
2159:
2135:
2123:
2096:
2063:
1223:
701:
786:
8936:
8780:
8613:
8505:
8360:
8336:
8276:
8243:
8205:
8190:
8129:
7839:
7811:
7796:
7771:
7767:
7746:
7727:
7702:
7638:
7628:
7613:
7295:
7289:
7268:
7241:
7233:
7204:
7191:
7128:
7124:
7114:
7090:
7086:
7080:
7033:
7004:
6718:
6555:
2151:
896:
35:
7262:
7175:
4168:
3722:
2915:
30:
This article is about recursive approaches to solving problems. For proofs by recursion, see
8916:
8901:
8495:
8427:
8291:
8032:
7865:
7717:
7676:
7225:
6920:
2175:
1974:
Conversely, all iterative functions and procedures that can be evaluated by a computer (see
1744:
880:
643:
599:
303:
291:
169:
72:
59:
7482:"How to replace recursive functions using stack and while-loop to avoid the stack-overflow"
866:
Hybrid algorithm (at bottom) – switching to a different algorithm once data is small enough
8891:
8545:
8419:
8285:
7986:
7661:
5895:
3955:
3599:
2086:
Because recursive algorithms can be subject to stack overflows, they may be vulnerable to
892:
529:
378:
160:
optimization may improve computational performance over a naive recursive implementation.
130:
7226:
3629:
2170:
algorithm, were once typical. Non-recursive algorithms for the same purpose, such as the
1978:) can be expressed in terms of recursive functions; iterative control constructs such as
403:
in programming languages. Language designers often express grammars in a syntax such as
55:
and relying heavily on recursion. Each branch can be seen as a smaller version of a tree.
7691:
Felleisen, Matthias; Findler, Robert B.; Flatt, Matthew; Krishnamurthi, Shriram (2001).
5407:
is a special case of the binary tree where the data elements of each node are in order.
769:
refers to this kind as generative recursion. Examples of generative recursion include:
133:; this means that they are as powerful (they can be used to solve the same problems) as
8757:
8597:
8253:
8119:
7821:
7761:
6999:
6968:
5903:
5424:
5400:
3820:
2668:
2217:
2119:
2075:
2011:
1768:
1740:
831:
604:
Most basic examples of recursion, and most of the examples presented here, demonstrate
571:
266:) there is not an obvious base case implied by the input data; for these one may add a
117:
support recursion by allowing a function to call itself from within its own code. Some
7316:
2138:. All of these algorithms can be implemented iteratively with the help of an explicit
8989:
8906:
8861:
8583:
7877:
7120:
7110:
7025:
4343:
2107:
2038:) is typically a very fast operation, and the difference is usually less noticeable.
778:
534:
298:. Recursion is a technique for representing data whose exact size is unknown to the
247:
156:, and, for certain problems, algorithmic or compiler-optimization techniques such as
101:
7363:"27.1. sys — System-specific parameters and functions — Python v2.7.3 documentation"
5880:- the files and directories are iterated, and each directory is opened recursively.
8856:
8820:
8790:
7665:
7617:
7466:
7447:
4347:
2155:
1964:
1723:
839:
177:
208:, meaning input(s) for which the program recurs (calls itself). For example, the
17:
8726:
7786:
2663:
A classic example of a recursive procedure is the function used to calculate the
8810:
8465:
5014:
4821:
1763:
are equally expressive: recursion can be replaced by iteration with an explicit
888:
583:
494:
490:
331:
307:
306:
definition. There are two types of self-referential definitions: inductive and
271:
185:
8800:
5416:
4227:
3946:
3533:
2800:
2647:
2421:
2059:
1979:
1960:
1764:
1736:
392:
374:
299:
149:
3799:
gcd(27, 9) = gcd(9, 27 % 9) = gcd(9, 0) = 9
8761:
7835:
7723:
7698:
6973:
6936:
6908:{\displaystyle \forall X,Y,Z(arc(X,Z)\land path(Z,Y)\rightarrow path(X,Y)).}
5877:
5420:
3623:
2664:
2191:
2163:
2131:
2035:
2007:
1829:
1760:
782:
774:
267:
209:
157:
84:
39:
7362:
7341:
47:
6935:, which separates declarative knowledge from problem solving methods (see
6740:
However, in the logical reading of logic programs, clauses are understood
2074:
is one such language. Note the caveat below regarding the special case of
2199:
2042:
1983:
678:
alone, it is indirectly recursing, while from the point of view of both,
590:, which allows iterative tree traversal, rather than multiple recursion.
514:
382:
2190:
Tail-recursive functions are functions in which all recursive calls are
2006:
are notable mainstream languages in which all function calls, including
863:
Short-circuiting the base case, aka "Arm's-length recursion" (at bottom)
8911:
7869:
7692:
7591:, pp. 447–448: An Explicit Formula for the Tower of Hanoi Sequence
6924:
2635:
The output of function 2 is that of function 1 with the lines swapped.
2629:
2529:
2167:
2091:
1748:
790:
335:
122:
6733:
to another node, and then searches for a path from that other node to
481:, with more than one product or sum operation in a single expression.
7515:
6579:
6531:
represents the number of recursive calls at each level of recursion,
562:, while recursion that contains multiple self-references is known as
7694:
How To Design
Programs: An Introduction to Computing and Programming
7264:
Python
Algorithms: Mastering Basic Algorithms in the Python Language
5906:. They can (usually) then be simplified into a single Big-O term.
7448:"Depth First Search (DFS): Iterative and Recursive Implementation"
7171:
6685:
define a procedure, which can be used to search for a path from
3945:
2099:
1747:. Hybrid recursive algorithms can often be further refined, as in
578:
being able to be replaced by iteration without an explicit stack.
58:
554:
Recursion that contains only a single self-reference is known as
388:
A natural number is either 1 or n+1, where n is a natural number.
8840:
7642:
7228:
Programming
Interviews Exposed: Secrets to Landing Your Next Job
2207:
295:
8730:
7889:
5259:
At most two recursive calls will be made for any given call to
1739:, which is often implemented by switching to the non-recursive
1255:
In terms of the standard steps, this moves the base case check
148:
Repeatedly calling a function from within itself may cause the
1274:
In C, the standard recursive algorithm may be implemented as:
891:, and handle exceptions and errors. In languages that support
7406:"Anatomy of a Stack Smashing Attack and How GCC Prevents It"
200:, meaning input(s) for which the function produces a result
7385:"Matching Wildcards: An Empirical Way to Tame an Algorithm"
4086:
3805:
Computing the recurrence relation for x = 111 and y = 259:
3513:
3370:; this is an example of iteration implemented recursively.
3341:
2780:
537:
is one that can be solved with a corecursive program (e.g.
7672:. Macdonald Computer Monographs (1 ed.). London, UK:
7062:
6717:. Prolog executes the procedure by reasoning top-down (or
6570:
are treated as procedures, which reduce goals of the form
5092:// Test if tree_node contains i; return 1 if so, 0 if not.
294:
must process or generate an arbitrarily large quantity of
7197:
Advanced
Functional Programming: 4th International School
7149:"Functional Programming | Clojure for the Brave and True"
6363:{\displaystyle f(n)=\Omega (n^{\log _{b}a+\varepsilon })}
674:
is indirectly recursing, while from the point of view of
7552:"Matching Wildcards: An Improved Algorithm for Big Data"
7055:"Teaching Recursive Thinking using Unplugged Activities"
3793:
Computing the recurrence relation for x = 27 and y = 9:
2231://INPUT: Integers x, y such that x >= y and y >= 0
823:) data structures can easily be shown to terminate, via
7024:
Graham, Ronald; Knuth, Donald; Patashnik, Oren (1990).
4372:
data is an array of integers SORTED in ASCENDING order,
2058:
In some programming languages, the maximum size of the
1805:
function recursive(n) if n == base return x
242:
terminate under normal circumstances—for example, some
7317:"The Anatomy of a Loop - A story of scope and control"
5920:
If the time-complexity of the function is in the form
4486:
data is a array of integers SORTED in ASCENDING order,
4068:
4013:
3495:
3437:
3323:
3247:
2762:
2713:
6793:
6477:
6402:
6376:
6306:
6231:
6167:
6101:
6075:
6005:
5926:
5685:* @param fd indicates the starting point of traversal
4171:
4115:
3980:
3752:
3725:
3663:
3632:
3602:
3401:
3362:
The definition above translates straightforwardly to
3105:
2918:
2868:
2680:
1818:
for i = base+1 to n x = f(i, x) return x
1443:
The short-circuited algorithm may be implemented as:
212:
function can be defined recursively by the equations
7564:
7185:
7183:
507:
of strings, given informally, might look like this:
8849:
8768:
8659:
8544:
8446:
8262:
8204:
8161:
8064:
8055:
7995:
7937:
7928:
7224:Mongan, John; Giguère, Eric; Kindler, Noah (2013).
6559:
6062:{\displaystyle f(n)=O(n^{\log _{b}a-\varepsilon })}
1751:, derived from a hybrid merge sort/insertion sort.
142:
138:
6907:
6516:
6452:
6388:
6362:
6291:{\displaystyle T(n)=\Theta (n^{\log _{b}a}\log n)}
6290:
6217:
6151:
6087:
6061:
5985:
5499:* Proceeds with the recursive filesystem traversal
4378:count is the total number of elements in the array
4366:Call binary_search with proper initial conditions.
4190:
4156:
4092:
3779:
3737:
3711:
3646:
3614:
3519:
3351:
2937:
2903:
2786:
1251:otherwise, on children, if not Null, then recurse.
1248:check value of current node, return true if match,
253:For some functions (such as one that computes the
34:. For recursion in computer science acronyms, see
7831:Structure and Interpretation of Computer Programs
7053:Kuhail, M. A.; Negreiros, J.; Seffah, A. (2021).
6709:, and then searching recursively for a path from
4501:position of the integer toFind within array data,
1990:. However, in practice this rewriting depends on
7085:(2nd ed.). PWS Publishing Company. p.
4780:Recursive data structures (structural recursion)
4690://Data is greater than toFind, search lower half
3753:
3685:
3664:
3456:
3402:
1237:base case: If current node is Null, return false
1222:A basic example of short-circuiting is given in
819:All structurally recursive functions on finite (
586:. A more sophisticated example involves using a
196:A recursive function definition has one or more
7294:(4th ed.), Cengage Learning, p. 197,
5995:Then the Big O of the time-complexity is thus:
1743:when the data is sufficiently small, as in the
1233:The standard recursive algorithm for a DFS is:
756:
724:
93:
6927:, to derive conclusions from conditions. This
6729:, it backtracks and tries to find an arc from
5898:of recursive algorithms can be expressed in a
4358:Example implementation of binary search in C:
1175:Short-circuiting the base case, also known as
302:: the programmer can specify this data with a
8742:
7901:
6453:{\displaystyle a\cdot f(n/b)\leq c\cdot f(n)}
4732://Data is less than toFind, search upper half
4204:Computing the recurrence relation for n = 4:
3386:of two integers, can be written recursively.
2954:Computing the recurrence relation for n = 4:
2062:is much less than the space available in the
1986:are routinely rewritten in recursive form in
732:Felleisen, Findler, Flatt, and Krishnaurthi,
36:Recursive acronym § Computer-related examples
8:
6218:{\displaystyle f(n)=\Theta (n^{\log _{b}a})}
6152:{\displaystyle T(n)=\Theta (n^{\log _{b}a})}
2330://INPUT: n is an Integer such that n >= 0
1994:, which is not a feature of all languages.
1832:function may be implemented iteratively in
1230:section for standard recursive discussion.
8749:
8735:
8727:
8061:
7934:
7908:
7894:
7886:
7623:Artificial Intelligence: A Modern Approach
1203:factorial, short-circuiting provides only
1188:code to shortcut factorial cases 0 and 1.
908:
485:Coinductively defined data and corecursion
7972:Programming in the large and in the small
6959:Hierarchical and recursive queries in SQL
6792:
6476:
6418:
6401:
6375:
6337:
6332:
6305:
6262:
6257:
6230:
6198:
6193:
6166:
6132:
6127:
6100:
6074:
6036:
6031:
6004:
5957:
5925:
4976:// print integer data followed by a space
4289:An explicit formula for Towers of Hanoi:
4176:
4170:
4136:
4120:
4114:
4067:
4012:
3999:
3979:
3751:
3724:
3662:
3636:
3631:
3601:
3494:
3436:
3423:
3400:
3322:
3280:
3266:
3246:
3233:
3195:
3181:
3146:
3132:
3106:
3104:
2923:
2917:
2889:
2873:
2867:
2761:
2712:
2699:
2679:
1809:else return f(n, recursive(n-1))
395:are often used to model the structure of
5679:* Recursively traverse a given directory
5367:// print the integer followed by a space
4285:
4223:
4200:
3833:
3789:
3529:
2989:
2950:
2796:
2213:
1448:// Wrapper function to handle empty tree
334:can be defined inductively (here, using
129:that these recursive-only languages are
46:
7116:Algorithms + Data Structures = Programs
7016:
5986:{\displaystyle T(n)=a\cdot T(n/b)+f(n)}
5916:Master theorem (analysis of algorithms)
5890:Time-efficiency of recursive algorithms
1767:, while iteration can be replaced with
550:Single recursion and multiple recursion
106:Algorithms + Data Structures = Programs
7579:, pp. 427–430: The Tower of Hanoi
7082:Discrete Mathematics with Applications
6693:, either by finding a direct arc from
3712:{\displaystyle \gcd(x,y)=\gcd(y,x\%y)}
2976:)) = 4 × (3 × (2 × (1 × b
2855:The function can also be written as a
1244:In short-circuiting, this is instead:
712:Structural versus generative recursion
7719:Introduction to Recursive Programming
7674:Macdonald & Co. (Publishers) Ltd.
7600:
7291:Data Structures and Algorithms in C++
7192:"Developing Interactive Web Programs"
6937:Algorithm#Algorithm = Logic + Control
4346:algorithm is a method of searching a
3901:to the remainder of x/y 3.
1967:and simulating the call stack with a
1179:, consists of checking the base case
611:, in which a function calls itself.
503:A coinductive definition of infinite
204:(without recurring), and one or more
27:Use of functions that call themselves
7:
7664:(1968) . Written at Cambridge, UK.
6554:In the procedural interpretation of
4834:, effectively creating a list type.
4489:toFind is the integer to search for,
4375:toFind is the integer to search for,
2206:that treats tail-recursive calls as
137:based on control structures such as
7670:Recursive techniques in programming
7588:
7576:
3596:for greatest common divisor, where
2172:Krauss matching wildcards algorithm
1971:explicitly managed by the program.
635:then that is indirect recursion of
574:, such as in a depth-first search.
38:. For general use of the term, see
7627:(4th ed.). Hoboken: Pearson.
7565:Graham, Knuth & Patashnik 1990
7531:"Matching Wildcards: An Algorithm"
7463:"Replace Recursion with Iteration"
6794:
6517:{\displaystyle T(n)=\Theta (f(n))}
6493:
6322:
6247:
6183:
6117:
4997:// recursive call on the next node
3700:
3606:
3287:
3284:
3281:
3277:
3273:
3270:
3267:
3202:
3199:
3196:
3192:
3188:
3185:
3182:
3153:
3150:
3147:
3143:
3139:
3136:
3133:
2102:may not prevent the corresponding
2034:, a function call (particularly a
1782:Compare the templates to compute x
642:Indirect recursion is also called
164:Recursive functions and algorithms
25:
7856:(1960). "Recursive Programming".
7322:. Georgia Institute of Technology
6558:, clauses (or rules) of the form
6389:{\displaystyle \varepsilon >0}
6088:{\displaystyle \varepsilon >0}
5399:The above example illustrates an
4875:// pointer to another struct node
4492:start is the minimum array index,
1547:// Assumes tree_node != NULL
1227:
811:This distinction is important in
666:again, from the point of view of
623:that is direct recursion, but if
533:problem of computing the first n
264:= 1/0! + 1/1! + 1/2! + 1/3! + ...
8516:Partitioned global address space
5876:This code is both recursion and
4157:{\displaystyle h_{n}=2h_{n-1}+1}
3364:functional programming languages
2972:) = 4 × (3 × (2 × b
2628:
2528:
5415:Since the number of files in a
4435:// End = count - 1 (top index)
4432:// Start = 0 (beginning index)
3819:The recursive program above is
1959:of the function (often using a
1814:function iterative(n) x = x
804:Advanced Functional Programming
7810:Helman, Paul; Veroff, Robert.
7763:Thinking Recursively with Java
7716:Rubio-Sanchez, Manuel (2017).
7426:"StackOverflowException Class"
6899:
6896:
6884:
6869:
6866:
6854:
6836:
6824:
6812:
6550:Recursion in Logic Programming
6511:
6508:
6502:
6496:
6487:
6481:
6447:
6441:
6426:
6412:
6357:
6325:
6316:
6310:
6285:
6250:
6241:
6235:
6212:
6186:
6177:
6171:
6146:
6120:
6111:
6105:
6056:
6024:
6015:
6009:
5980:
5974:
5965:
5951:
5936:
5930:
5910:Shortcut rule (master theorem)
5496:* Obtains the filesystem roots
5061:// pointer to the left subtree
4495:end is the maximum array index
4056:
4044:
3993:
3987:
3768:
3756:
3706:
3688:
3679:
3667:
3489:
3486:
3474:
3459:
3417:
3405:
3317:
3296:
3223:
3211:
3174:
3162:
3122:
3116:
2904:{\displaystyle b_{n}=nb_{n-1}}
2756:
2744:
2693:
2687:
2432:Consider these two functions:
903:Short-circuiting the base case
1:
6995:Primitive recursive functions
5079:// point to the right subtree
4104:Recurrence relation for hanoi
2128:divide-and-conquer algorithms
2050:saved by choosing iteration.
373:Another example of inductive
8996:Theoretical computer science
8043:Uniform Function Call Syntax
7743:Practicing Recursion in Java
7430:.NET Framework Class Library
7261:Hetland, Magnus Lie (2010),
7190:Felleisen, Matthias (2002).
6701:, or by finding an arc from
4624://Stop condition (base case)
2134:, and functions such as the
1965:iterative control constructs
1226:(DFS) of a binary tree; see
8511:Parallel programming models
8485:Concurrent constraint logic
7745:. CreateSpace Independent.
7434:Microsoft Developer Network
7194:. In Jeuring, Johan (ed.).
7176:art V "Generative Recursion
6467:and all sufficiently large
4330:= 2 - 1, for all n >= 1
3780:{\displaystyle \gcd(x,0)=x}
2114:Multiply recursive problems
1955:keeps track of the various
835:not necessarily guaranteed.
244:system and server processes
9032:
8604:Metalinguistic abstraction
8471:Automatic mutual exclusion
7793:Cambridge University Press
7567:, §1.1: The Tower of Hanoi
7554:. Develop for Performance.
6776:then there is a path from
6760:, if there is an arc from
6746:representing the knowledge
5913:
5012:
4819:
4783:
3953:
1755:Recursion versus iteration
1541:// call auxiliary function
1012:
925:
715:
693:
597:
488:
323:
312:
29:
8965:
8476:Choreographic programming
7828:; Sussman, Julie (1996).
7785:Rohl, Jeffrey S. (1984).
7203:. Springer. p. 108.
4221:Example implementations:
860:Wrapper function (at top)
174:divide-and-conquer method
121:languages (for instance,
79:is a method of solving a
53:Logo programming language
8526:Relativistic programming
7550:Krauss, Kirk J. (2018).
7529:Krauss, Kirk J. (2008).
7404:Mueller, Oliver (2012).
7383:Krauss, Kirk J. (2014).
6584:
6574:to subgoals of the form
5433:
5265:
5089:
5022:
4898:
4836:
4830:is a pointer to another
4480:Binary Search Algorithm.
4360:
3837:Pseudocode (iterative):
2993:Pseudocode (iterative):
2539:
2439:
2327:
2228:
2186:Tail-recursive functions
1838:
1719:short-circuit evaluation
1445:
1276:
1013:
926:
921:Short-circuit recursion
409:
340:
320:Inductively defined data
67:through turtle graphics.
8970:List of data structures
7450:. Techie Delight. 2018.
7342:"The Anatomy of a Loop"
7026:"1: Recurrent Problems"
5403:of the binary tree. A
4384:result of binary_search
4191:{\displaystyle h_{1}=1}
3738:{\displaystyle y\neq 0}
3384:greatest common divisor
3374:Greatest common divisor
2938:{\displaystyle b_{0}=1}
2012:overflow the call stack
176:; when combined with a
63:Recursive drawing of a
51:Tree created using the
8536:Structured concurrency
7921:Comparison by language
7760:Roberts, Eric (2005).
7480:La, Woong Gyu (2015).
7288:Drozdek, Adam (2012),
7267:, Apress, p. 79,
6949:Functional programming
6929:separation of concerns
6909:
6518:
6454:
6390:
6364:
6292:
6219:
6153:
6089:
6063:
5987:
4813:
4804:
4192:
4158:
4094:
3951:
3781:
3739:
3713:
3648:
3616:
3521:
3353:
2939:
2905:
2788:
2223:Augmenting recursion:
2022:In languages (such as
1773:imperative programming
1177:arm's-length recursion
809:
765:How to Design Programs
741:
735:How to Design Programs
119:functional programming
111:
68:
56:
32:Mathematical induction
8501:Multitier programming
8317:Interface description
7917:Programming paradigms
7858:Numerische Mathematik
7741:Pevac, Irena (2016).
7662:Barron, David William
7495:Moertel, Tom (2013).
7344:. Lambda the Ultimate
7340:Lambda the Ultimate.
7172:Felleisen et al. 2001
7079:Epp, Susanna (1995).
6990:μ-recursive functions
6964:Kleene–Rosser paradox
6954:Computational problem
6910:
6519:
6455:
6391:
6365:
6293:
6220:
6154:
6090:
6064:
5988:
5268:// Inorder traversal:
4808:
4800:
4657://Found, return index
4193:
4159:
4095:
3949:
3886:loop 1. if
3782:
3740:
3714:
3649:
3617:
3522:
3382:, which computes the
3354:
3036:loop 1. if
2940:
2906:
2789:
2146:Refactoring recursion
1992:tail call elimination
1949:programming languages
1886:// empty product is 1
1735:important example is
1037:// assert(n >= 2);
851:Implementation issues
584:corecursion: examples
313:Further information:
115:programming languages
81:computational problem
62:
50:
9006:Computability theory
8867:Breadth-first search
7788:Recursion Via Pascal
7153:www.braveclojure.com
7030:Concrete Mathematics
6985:McCarthy 91 function
6791:
6784:. In symbolic form:
6475:
6400:
6374:
6304:
6229:
6165:
6099:
6073:
6003:
5924:
5411:Filesystem traversal
5043:// some integer data
4857:// some integer data
4169:
4113:
3978:
3905:x to y 4.
3877:new variable called
3750:
3723:
3661:
3630:
3615:{\displaystyle x\%y}
3600:
3399:
3103:
3026:new variable called
2916:
2866:
2840:1 2. otherwise,
2678:
2654:Recursive procedures
2032:functional languages
1988:functional languages
1777:functional languages
825:structural induction
802:Matthias Felleisen,
795:adaptive integration
754:is the alternative:
750:Generative recursion
718:Structural recursion
662:which in turn calls
588:threaded binary tree
391:Similarly recursive
286:Recursive data types
135:imperative languages
127:computability theory
8957:Topological sorting
8887:Dynamic programming
8641:Self-modifying code
8249:Probabilistic logic
8180:Functional reactive
8135:Expression-oriented
8089:Partial application
7854:Dijkstra, Edsger W.
7826:Sussman, Gerald Jay
7510:Salz, Rich (1991).
6578:. For example, the
5900:recurrence relation
4786:Recursive data type
4561://Get the midpoint.
3969:Function definition
3647:{\displaystyle x/y}
3594:Recurrence relation
3390:Function definition
3380:Euclidean algorithm
2857:recurrence relation
2642:Also note that the
2047:orders of magnitude
1976:Turing completeness
1953:runtime environment
1265:perfect binary tree
918:Ordinary recursion
914:
911:Factorial: ordinary
821:inductively defined
813:proving termination
706:anonymous recursion
702:anonymous functions
696:Anonymous recursion
690:Anonymous recursion
479:(5 * ((3 * 6) + 8))
326:Recursive data type
315:Algebraic data type
182:dynamic programming
65:Sierpiński Triangle
9011:Programming idioms
8975:List of algorithms
8882:Divide and conquer
8877:Depth-first search
8872:Brute-force search
8786:Binary search tree
8554:Attribute-oriented
8327:List comprehension
8272:Algebraic modeling
8085:Anonymous function
7977:Design by contract
7947:Jackson structures
7870:10.1007/BF01386232
7614:Russell, Stuart J.
7536:Dr. Dobb's Journal
7411:Dr. Dobb's Journal
7390:Dr. Dobb's Journal
7032:. Addison-Wesley.
6905:
6514:
6460:for some constant
6450:
6386:
6370:for some constant
6360:
6288:
6215:
6149:
6085:
6069:for some constant
6059:
5983:
5429:preorder traversal
5405:Binary search tree
5401:in-order traversal
5263:as defined above.
4603://Integer division
4188:
4154:
4090:
4085:
4072:
4017:
3952:
3894:loop 2.
3777:
3735:
3709:
3644:
3612:
3517:
3512:
3499:
3441:
3349:
3347:
3340:
3327:
3251:
3044:loop 2.
3030:with a value of 1
2935:
2901:
2784:
2779:
2766:
2717:
2428:Order of execution
2160:matching wildcards
2136:Ackermann function
2124:depth-first search
2097:exception handling
2018:Performance issues
1224:depth-first search
1218:Depth-first search
913:vs. short-circuit
909:
704:, and is known as
594:Indirect recursion
566:multiple recursion
545:Types of recursion
282:th partial sum)".
85:recursive problems
69:
57:
18:Multiple recursion
8983:
8982:
8781:Associative array
8724:
8723:
8614:Program synthesis
8506:Organic computing
8442:
8441:
8347:Non-English-based
8322:Language-oriented
8100:Purely functional
8051:
8050:
7813:Walls and Mirrors
7802:978-0-521-26934-6
7752:978-1-5327-1227-2
7733:978-1-351-64717-5
7365:. Docs.python.org
7247:978-1-118-26136-1
7005:Logic programming
5431:of a filesystem.
4335:
4334:
4281:
4280:
4216:
4215:
4071:
4016:
3935:
3934:
3817:
3816:
3591:
3590:
3498:
3440:
3326:
3250:
3088:
3087:
2985:
2984:
2853:
2852:
2765:
2716:
2581:recursiveFunction
2545:recursiveFunction
2505:recursiveFunction
2445:recursiveFunction
2418:
2417:
1823:
1822:
1263:In the case of a
1173:
1172:
897:pass-by-reference
292:computer programs
16:(Redirected from
9023:
8952:String-searching
8751:
8744:
8737:
8728:
8626:by demonstration
8531:Service-oriented
8521:Process-oriented
8496:Macroprogramming
8481:Concurrent logic
8352:Page description
8342:Natural language
8312:Grammar-oriented
8239:Nondeterministic
8228:Constraint logic
8130:Point-free style
8125:Functional logic
8062:
8033:Immutable object
7952:Block-structured
7935:
7910:
7903:
7896:
7887:
7881:
7849:
7834:(2nd ed.).
7817:
7806:
7781:
7777:978-0-47170146-0
7756:
7737:
7712:
7686:
7647:
7646:
7610:
7604:
7598:
7592:
7586:
7580:
7574:
7568:
7562:
7556:
7555:
7547:
7541:
7540:
7526:
7520:
7519:
7507:
7501:
7500:
7492:
7486:
7485:
7477:
7471:
7470:
7461:Mitrovic, Ivan.
7458:
7452:
7451:
7444:
7438:
7437:
7422:
7416:
7415:
7401:
7395:
7394:
7380:
7374:
7373:
7371:
7370:
7359:
7353:
7352:
7350:
7349:
7337:
7331:
7330:
7328:
7327:
7321:
7312:
7306:
7304:
7285:
7279:
7277:
7258:
7252:
7251:
7232:(3rd ed.).
7231:
7221:
7215:
7214:
7202:
7187:
7178:
7169:
7163:
7162:
7160:
7159:
7145:
7139:
7138:
7134:978-0-13022418-7
7107:
7101:
7100:
7096:978-0-53494446-9
7076:
7070:
7069:
7059:
7050:
7044:
7043:
7021:
6980:Sierpiński curve
6914:
6912:
6911:
6906:
6768:and a path from
6748:that, for every
6681:
6678:
6675:
6672:
6669:
6666:
6663:
6660:
6657:
6654:
6651:
6648:
6645:
6642:
6639:
6636:
6633:
6630:
6627:
6624:
6621:
6618:
6615:
6612:
6609:
6606:
6603:
6600:
6597:
6594:
6591:
6588:
6577:
6573:
6569:
6568:
6565:
6562:
6545:
6534:
6530:
6523:
6521:
6520:
6515:
6470:
6466:
6459:
6457:
6456:
6451:
6422:
6395:
6393:
6392:
6387:
6369:
6367:
6366:
6361:
6356:
6355:
6342:
6341:
6297:
6295:
6294:
6289:
6275:
6274:
6267:
6266:
6224:
6222:
6221:
6216:
6211:
6210:
6203:
6202:
6158:
6156:
6155:
6150:
6145:
6144:
6137:
6136:
6094:
6092:
6091:
6086:
6068:
6066:
6065:
6060:
6055:
6054:
6041:
6040:
5992:
5990:
5989:
5984:
5961:
5872:
5869:
5866:
5863:
5860:
5857:
5854:
5851:
5848:
5845:
5842:
5839:
5836:
5833:
5830:
5827:
5824:
5821:
5818:
5815:
5812:
5809:
5806:
5803:
5800:
5797:
5794:
5791:
5788:
5785:
5782:
5779:
5776:
5773:
5770:
5767:
5764:
5761:
5758:
5755:
5752:
5749:
5746:
5743:
5740:
5737:
5734:
5731:
5728:
5725:
5722:
5719:
5716:
5713:
5710:
5707:
5704:
5701:
5698:
5695:
5692:
5689:
5686:
5683:
5680:
5677:
5674:
5671:
5668:
5665:
5662:
5659:
5656:
5653:
5650:
5647:
5644:
5641:
5638:
5635:
5632:
5629:
5626:
5623:
5620:
5617:
5614:
5611:
5608:
5605:
5602:
5599:
5596:
5593:
5590:
5587:
5584:
5581:
5578:
5575:
5572:
5569:
5566:
5563:
5560:
5557:
5554:
5551:
5548:
5545:
5542:
5539:
5536:
5533:
5530:
5527:
5524:
5521:
5518:
5515:
5512:
5509:
5506:
5503:
5500:
5497:
5494:
5491:
5488:
5485:
5482:
5479:
5476:
5473:
5470:
5467:
5464:
5461:
5458:
5455:
5452:
5449:
5446:
5443:
5440:
5437:
5395:
5392:
5389:
5386:
5383:
5380:
5377:
5374:
5371:
5368:
5365:
5362:
5359:
5356:
5353:
5350:
5347:
5344:
5341:
5338:
5335:
5332:
5329:
5326:
5323:
5320:
5317:
5314:
5311:
5308:
5305:
5302:
5299:
5296:
5293:
5290:
5287:
5284:
5281:
5278:
5275:
5272:
5269:
5255:
5252:
5249:
5246:
5243:
5240:
5237:
5234:
5231:
5228:
5225:
5222:
5219:
5216:
5213:
5210:
5207:
5204:
5201:
5198:
5195:
5192:
5189:
5186:
5183:
5180:
5177:
5174:
5171:
5168:
5165:
5162:
5159:
5156:
5153:
5150:
5147:
5144:
5141:
5138:
5135:
5132:
5129:
5126:
5123:
5120:
5117:
5114:
5111:
5108:
5105:
5102:
5099:
5096:
5093:
5083:
5080:
5077:
5074:
5071:
5068:
5065:
5062:
5059:
5056:
5053:
5050:
5047:
5044:
5041:
5038:
5035:
5032:
5029:
5026:
5004:
5001:
4998:
4995:
4992:
4989:
4986:
4983:
4980:
4977:
4974:
4971:
4968:
4965:
4962:
4959:
4956:
4953:
4950:
4947:
4944:
4941:
4938:
4935:
4932:
4929:
4926:
4923:
4920:
4917:
4914:
4911:
4908:
4905:
4902:
4879:
4876:
4873:
4870:
4867:
4864:
4861:
4858:
4855:
4852:
4849:
4846:
4843:
4840:
4775:
4772:
4769:
4766:
4763:
4760:
4757:
4754:
4751:
4748:
4745:
4742:
4739:
4736:
4733:
4730:
4727:
4724:
4721:
4718:
4715:
4712:
4709:
4706:
4703:
4700:
4697:
4694:
4691:
4688:
4685:
4682:
4679:
4676:
4673:
4670:
4667:
4664:
4661:
4658:
4655:
4652:
4649:
4646:
4643:
4640:
4637:
4634:
4631:
4628:
4625:
4622:
4619:
4616:
4613:
4610:
4607:
4604:
4601:
4598:
4595:
4592:
4589:
4586:
4583:
4580:
4577:
4574:
4571:
4568:
4565:
4562:
4559:
4556:
4553:
4550:
4547:
4544:
4541:
4538:
4535:
4532:
4529:
4526:
4523:
4520:
4517:
4514:
4511:
4508:
4505:
4502:
4499:
4496:
4493:
4490:
4487:
4484:
4481:
4478:
4475:
4472:
4469:
4466:
4463:
4460:
4457:
4454:
4451:
4448:
4445:
4442:
4439:
4436:
4433:
4430:
4427:
4424:
4421:
4418:
4415:
4412:
4409:
4406:
4403:
4400:
4397:
4394:
4391:
4388:
4385:
4382:
4379:
4376:
4373:
4370:
4367:
4364:
4286:
4224:
4201:
4197:
4195:
4194:
4189:
4181:
4180:
4163:
4161:
4160:
4155:
4147:
4146:
4125:
4124:
4099:
4097:
4096:
4091:
4089:
4088:
4073:
4069:
4018:
4014:
3834:
3790:
3786:
3784:
3783:
3778:
3744:
3742:
3741:
3736:
3718:
3716:
3715:
3710:
3653:
3651:
3650:
3645:
3640:
3621:
3619:
3618:
3613:
3530:
3526:
3524:
3523:
3518:
3516:
3515:
3500:
3496:
3442:
3438:
3358:
3356:
3355:
3350:
3348:
3344:
3343:
3328:
3324:
3292:
3291:
3290:
3252:
3248:
3207:
3206:
3205:
3158:
3157:
3156:
3095:
2990:
2951:
2944:
2942:
2941:
2936:
2928:
2927:
2910:
2908:
2907:
2902:
2900:
2899:
2878:
2877:
2797:
2793:
2791:
2790:
2785:
2783:
2782:
2767:
2763:
2718:
2714:
2632:
2624:
2621:
2618:
2615:
2612:
2609:
2606:
2603:
2600:
2597:
2594:
2591:
2588:
2585:
2582:
2579:
2576:
2573:
2570:
2567:
2564:
2561:
2558:
2555:
2552:
2549:
2546:
2543:
2532:
2524:
2521:
2518:
2515:
2512:
2509:
2506:
2503:
2500:
2497:
2494:
2491:
2488:
2485:
2482:
2479:
2476:
2473:
2470:
2467:
2464:
2461:
2458:
2455:
2452:
2449:
2446:
2443:
2412:
2409:
2406:
2403:
2400:
2397:
2394:
2391:
2388:
2385:
2382:
2379:
2376:
2373:
2370:
2367:
2364:
2361:
2358:
2355:
2352:
2349:
2346:
2343:
2340:
2337:
2334:
2331:
2322:
2319:
2316:
2313:
2310:
2307:
2304:
2301:
2298:
2295:
2292:
2289:
2286:
2283:
2280:
2277:
2274:
2271:
2268:
2265:
2262:
2259:
2256:
2253:
2250:
2247:
2244:
2241:
2238:
2235:
2232:
2214:
1943:Expressive power
1938:
1935:
1932:
1929:
1926:
1923:
1920:
1917:
1914:
1911:
1908:
1905:
1902:
1899:
1896:
1893:
1890:
1887:
1884:
1881:
1878:
1875:
1872:
1869:
1866:
1863:
1860:
1857:
1854:
1851:
1848:
1845:
1842:
1801:
1800:
1745:tiled merge sort
1730:Hybrid algorithm
1717:Note the use of
1713:
1710:
1707:
1704:
1701:
1698:
1695:
1692:
1689:
1688:tree_contains_do
1686:
1683:
1680:
1677:
1674:
1671:
1668:
1665:
1662:
1659:
1656:
1653:
1650:
1647:
1646:tree_contains_do
1644:
1641:
1638:
1635:
1632:
1629:
1626:
1623:
1620:
1617:
1614:
1611:
1608:
1605:
1602:
1599:
1596:
1593:
1590:
1587:
1584:
1581:
1578:
1575:
1572:
1569:
1566:
1563:
1560:
1557:
1554:
1553:tree_contains_do
1551:
1548:
1545:
1542:
1539:
1536:
1533:
1530:
1527:
1524:
1523:tree_contains_do
1521:
1518:
1515:
1512:
1509:
1506:
1503:
1500:
1497:
1494:
1491:
1488:
1485:
1482:
1479:
1476:
1473:
1470:
1467:
1464:
1461:
1458:
1455:
1452:
1449:
1439:
1436:
1433:
1430:
1427:
1424:
1421:
1418:
1415:
1412:
1409:
1406:
1403:
1400:
1397:
1394:
1391:
1388:
1385:
1382:
1379:
1376:
1373:
1370:
1367:
1364:
1361:
1358:
1355:
1352:
1349:
1346:
1343:
1340:
1337:
1334:
1331:
1328:
1325:
1322:
1319:
1316:
1313:
1310:
1307:
1304:
1301:
1298:
1295:
1292:
1289:
1286:
1283:
1280:
1209:
1201:
1167:
1164:
1161:
1158:
1155:
1152:
1149:
1146:
1143:
1140:
1137:
1134:
1131:
1128:
1125:
1122:
1119:
1116:
1113:
1110:
1107:
1104:
1101:
1098:
1095:
1092:
1089:
1086:
1083:
1080:
1077:
1074:
1071:
1068:
1065:
1062:
1059:
1056:
1053:
1050:
1047:
1044:
1041:
1038:
1035:
1032:
1029:
1026:
1023:
1020:
1017:
1008:
1005:
1002:
999:
996:
993:
990:
987:
984:
981:
978:
975:
972:
969:
966:
963:
960:
957:
954:
951:
948:
945:
942:
939:
936:
933:
930:
915:
912:
893:nested functions
881:wrapper function
875:Wrapper function
807:
752:
751:
739:
644:mutual recursion
600:Mutual recursion
568:
567:
560:
559:
558:single recursion
524:
520:
480:
471:
468:
465:
461:
458:
455:
451:
448:
445:
441:
438:
435:
431:
428:
425:
422:
419:
416:
413:
405:Backus–Naur form
365:
362:
359:
356:
353:
350:
347:
344:
304:self-referential
265:
237:
222:
215:
170:algorithm design
144:
140:
109:
73:computer science
21:
9031:
9030:
9026:
9025:
9024:
9022:
9021:
9020:
8986:
8985:
8984:
8979:
8961:
8892:Graph traversal
8845:
8769:Data structures
8764:
8758:Data structures
8755:
8725:
8720:
8662:
8655:
8546:Metaprogramming
8540:
8456:
8451:
8438:
8420:Graph rewriting
8258:
8234:Inductive logic
8214:Abductive logic
8200:
8157:
8120:Dependent types
8068:
8047:
8019:Prototype-based
7999:
7997:Object-oriented
7991:
7987:Nested function
7982:Invariant-based
7924:
7914:
7884:
7852:
7846:
7822:Abelson, Harold
7820:
7809:
7803:
7784:
7778:
7759:
7753:
7740:
7734:
7715:
7709:
7690:
7687:(viii+64 pages)
7683:
7660:
7656:
7651:
7650:
7635:
7612:
7611:
7607:
7599:
7595:
7587:
7583:
7575:
7571:
7563:
7559:
7549:
7548:
7544:
7528:
7527:
7523:
7509:
7508:
7504:
7494:
7493:
7489:
7479:
7478:
7474:
7460:
7459:
7455:
7446:
7445:
7441:
7424:
7423:
7419:
7403:
7402:
7398:
7382:
7381:
7377:
7368:
7366:
7361:
7360:
7356:
7347:
7345:
7339:
7338:
7334:
7325:
7323:
7319:
7315:Shivers, Olin.
7314:
7313:
7309:
7302:
7287:
7286:
7282:
7275:
7260:
7259:
7255:
7248:
7223:
7222:
7218:
7211:
7200:
7189:
7188:
7181:
7170:
7166:
7157:
7155:
7147:
7146:
7142:
7135:
7109:
7108:
7104:
7097:
7078:
7077:
7073:
7057:
7052:
7051:
7047:
7040:
7023:
7022:
7018:
7013:
6945:
6789:
6788:
6683:
6682:
6679:
6676:
6673:
6670:
6667:
6664:
6661:
6658:
6655:
6652:
6649:
6646:
6643:
6640:
6637:
6634:
6631:
6628:
6625:
6622:
6619:
6616:
6613:
6610:
6607:
6604:
6601:
6598:
6595:
6592:
6589:
6586:
6575:
6571:
6566:
6563:
6560:
6552:
6536:
6532:
6528:
6473:
6472:
6468:
6461:
6398:
6397:
6372:
6371:
6333:
6328:
6302:
6301:
6258:
6253:
6227:
6226:
6194:
6189:
6163:
6162:
6128:
6123:
6097:
6096:
6071:
6070:
6032:
6027:
6001:
6000:
5922:
5921:
5918:
5912:
5896:time efficiency
5892:
5874:
5873:
5870:
5867:
5864:
5861:
5858:
5855:
5852:
5849:
5846:
5843:
5840:
5837:
5834:
5831:
5828:
5825:
5822:
5819:
5816:
5813:
5810:
5807:
5804:
5801:
5798:
5795:
5792:
5789:
5786:
5783:
5780:
5777:
5774:
5771:
5768:
5765:
5762:
5759:
5756:
5753:
5750:
5747:
5744:
5741:
5738:
5735:
5732:
5729:
5726:
5723:
5720:
5717:
5714:
5711:
5708:
5705:
5702:
5699:
5696:
5693:
5690:
5687:
5684:
5681:
5678:
5675:
5672:
5669:
5666:
5663:
5660:
5657:
5654:
5651:
5648:
5645:
5642:
5639:
5636:
5633:
5630:
5627:
5624:
5621:
5618:
5615:
5612:
5609:
5606:
5603:
5600:
5597:
5594:
5591:
5588:
5585:
5582:
5579:
5576:
5573:
5570:
5567:
5564:
5561:
5558:
5555:
5552:
5549:
5546:
5543:
5540:
5537:
5534:
5531:
5528:
5525:
5522:
5519:
5516:
5513:
5510:
5507:
5504:
5501:
5498:
5495:
5492:
5489:
5486:
5483:
5480:
5477:
5474:
5471:
5468:
5465:
5462:
5459:
5456:
5453:
5450:
5447:
5444:
5441:
5438:
5435:
5413:
5397:
5396:
5393:
5390:
5387:
5384:
5381:
5378:
5375:
5372:
5369:
5366:
5363:
5360:
5357:
5354:
5351:
5349:"%d "
5348:
5345:
5342:
5339:
5336:
5333:
5330:
5327:
5324:
5321:
5318:
5315:
5312:
5309:
5306:
5303:
5300:
5297:
5294:
5291:
5288:
5285:
5282:
5279:
5276:
5273:
5270:
5267:
5257:
5256:
5253:
5250:
5247:
5244:
5241:
5238:
5235:
5232:
5229:
5226:
5223:
5220:
5217:
5214:
5211:
5208:
5205:
5202:
5199:
5196:
5193:
5190:
5187:
5184:
5181:
5178:
5175:
5172:
5169:
5166:
5163:
5160:
5157:
5154:
5151:
5148:
5145:
5142:
5139:
5136:
5133:
5130:
5127:
5124:
5121:
5118:
5115:
5112:
5109:
5106:
5103:
5100:
5097:
5094:
5091:
5085:
5084:
5081:
5078:
5075:
5072:
5069:
5066:
5063:
5060:
5057:
5054:
5051:
5048:
5045:
5042:
5039:
5036:
5033:
5030:
5027:
5024:
5017:
5011:
5006:
5005:
5002:
4999:
4996:
4993:
4990:
4987:
4984:
4981:
4978:
4975:
4972:
4969:
4966:
4963:
4960:
4958:"%d "
4957:
4954:
4951:
4948:
4945:
4942:
4939:
4936:
4933:
4930:
4927:
4924:
4921:
4918:
4915:
4912:
4909:
4906:
4903:
4900:
4881:
4880:
4877:
4874:
4871:
4868:
4865:
4862:
4859:
4856:
4853:
4850:
4847:
4844:
4841:
4838:
4824:
4818:
4788:
4782:
4777:
4776:
4773:
4770:
4767:
4764:
4761:
4758:
4755:
4752:
4749:
4746:
4743:
4740:
4737:
4734:
4731:
4728:
4725:
4722:
4719:
4716:
4713:
4710:
4707:
4704:
4701:
4698:
4695:
4692:
4689:
4686:
4683:
4680:
4677:
4674:
4671:
4668:
4665:
4662:
4659:
4656:
4653:
4650:
4647:
4644:
4641:
4638:
4635:
4632:
4629:
4626:
4623:
4620:
4617:
4614:
4611:
4608:
4605:
4602:
4599:
4596:
4593:
4590:
4587:
4584:
4581:
4578:
4575:
4572:
4569:
4566:
4563:
4560:
4557:
4554:
4551:
4548:
4545:
4542:
4539:
4536:
4533:
4530:
4527:
4524:
4521:
4518:
4515:
4512:
4509:
4506:
4504:-1 if not found
4503:
4500:
4497:
4494:
4491:
4488:
4485:
4482:
4479:
4476:
4473:
4470:
4467:
4464:
4461:
4458:
4455:
4452:
4449:
4446:
4443:
4440:
4437:
4434:
4431:
4428:
4425:
4422:
4419:
4416:
4413:
4410:
4407:
4404:
4401:
4398:
4395:
4392:
4389:
4386:
4383:
4380:
4377:
4374:
4371:
4368:
4365:
4362:
4340:
4331:
4329:
4324:
4322:
4319:= 63 = 2 - 1 h
4318:
4315:= 31 = 2 - 1 h
4314:
4311:= 15 = 2 - 1 h
4310:
4307:= 7 = 2 - 1 h
4306:
4303:= 3 = 2 - 1 h
4302:
4299:= 1 = 2 - 1 h
4298:
4277:
4272:
4266:
4256:
4240:
4218:
4212:
4172:
4167:
4166:
4132:
4116:
4111:
4110:
4084:
4083:
4065:
4029:
4028:
4010:
4000:
3976:
3975:
3958:
3956:Towers of Hanoi
3950:Towers of Hanoi
3944:
3942:Towers of Hanoi
3931:
3926:
3918:
3881:
3872:
3847:
3813:
3800:
3748:
3747:
3721:
3720:
3659:
3658:
3628:
3627:
3598:
3597:
3587:
3582:
3566:
3511:
3510:
3492:
3453:
3452:
3434:
3424:
3397:
3396:
3376:
3346:
3345:
3339:
3338:
3320:
3276:
3263:
3262:
3244:
3234:
3226:
3191:
3178:
3177:
3142:
3125:
3101:
3100:
3094:
3091:
3084:
3079:
3071:
3059:) 3.
3031:
3021:
3016:
3003:
2981:
2979:
2975:
2971:
2967:
2963:
2919:
2914:
2913:
2885:
2869:
2864:
2863:
2849:
2844:
2831:
2826:
2813:
2778:
2777:
2759:
2729:
2728:
2710:
2700:
2676:
2675:
2661:
2656:
2626:
2625:
2622:
2619:
2616:
2613:
2610:
2607:
2604:
2601:
2598:
2595:
2592:
2589:
2586:
2583:
2580:
2577:
2574:
2571:
2568:
2565:
2562:
2559:
2556:
2553:
2550:
2547:
2544:
2541:
2538:
2526:
2525:
2522:
2519:
2516:
2513:
2510:
2507:
2504:
2501:
2498:
2495:
2492:
2489:
2486:
2483:
2480:
2477:
2474:
2471:
2468:
2465:
2462:
2459:
2456:
2453:
2450:
2447:
2444:
2441:
2438:
2430:
2414:
2413:
2410:
2407:
2404:
2401:
2398:
2395:
2392:
2389:
2386:
2383:
2380:
2377:
2374:
2371:
2368:
2365:
2362:
2359:
2356:
2353:
2350:
2347:
2344:
2341:
2338:
2335:
2332:
2329:
2324:
2323:
2320:
2317:
2314:
2311:
2308:
2305:
2302:
2299:
2296:
2293:
2290:
2287:
2284:
2281:
2278:
2275:
2272:
2269:
2266:
2263:
2260:
2257:
2254:
2251:
2248:
2245:
2242:
2239:
2236:
2233:
2230:
2188:
2148:
2116:
2084:
2068:stack overflows
2056:
2020:
1945:
1940:
1939:
1936:
1933:
1930:
1927:
1924:
1921:
1918:
1915:
1912:
1909:
1906:
1903:
1900:
1897:
1894:
1891:
1888:
1885:
1882:
1879:
1876:
1873:
1870:
1867:
1864:
1861:
1858:
1855:
1852:
1849:
1846:
1843:
1840:
1828:For example, a
1819:
1817:
1810:
1808:
1797:
1793:
1789:
1785:
1757:
1732:
1715:
1714:
1711:
1708:
1705:
1702:
1699:
1696:
1693:
1690:
1687:
1684:
1681:
1678:
1675:
1672:
1669:
1666:
1663:
1660:
1657:
1654:
1651:
1648:
1645:
1642:
1639:
1636:
1633:
1630:
1627:
1624:
1621:
1618:
1615:
1612:
1609:
1606:
1603:
1600:
1597:
1594:
1591:
1588:
1585:
1582:
1579:
1576:
1573:
1570:
1567:
1564:
1561:
1558:
1555:
1552:
1549:
1546:
1543:
1540:
1537:
1534:
1531:
1528:
1525:
1522:
1519:
1516:
1513:
1510:
1507:
1504:
1501:
1498:
1495:
1492:
1489:
1486:
1483:
1480:
1477:
1474:
1471:
1468:
1465:
1462:
1459:
1456:
1453:
1450:
1447:
1441:
1440:
1437:
1434:
1431:
1428:
1425:
1422:
1419:
1416:
1413:
1410:
1407:
1404:
1401:
1398:
1395:
1392:
1389:
1386:
1383:
1380:
1377:
1374:
1371:
1368:
1365:
1362:
1359:
1356:
1353:
1350:
1347:
1344:
1341:
1338:
1335:
1332:
1329:
1326:
1323:
1320:
1317:
1314:
1311:
1308:
1305:
1302:
1299:
1296:
1293:
1290:
1287:
1284:
1281:
1278:
1220:
1204:
1192:
1169:
1168:
1165:
1162:
1159:
1156:
1153:
1150:
1147:
1144:
1141:
1138:
1135:
1132:
1129:
1126:
1123:
1120:
1117:
1114:
1111:
1108:
1105:
1102:
1099:
1096:
1093:
1090:
1087:
1084:
1081:
1078:
1075:
1072:
1069:
1066:
1063:
1060:
1057:
1054:
1051:
1048:
1045:
1042:
1039:
1036:
1033:
1030:
1027:
1024:
1021:
1018:
1015:
1010:
1009:
1006:
1003:
1000:
997:
994:
991:
988:
985:
982:
979:
976:
973:
970:
967:
964:
961:
958:
955:
952:
949:
946:
943:
940:
937:
934:
931:
928:
910:
905:
877:
853:
815:of a function.
808:
801:
787:Newton's method
749:
748:
740:
731:
720:
714:
698:
692:
602:
596:
565:
564:
557:
556:
552:
547:
522:
518:
511:
497:
489:Main articles:
487:
478:
474:
473:
469:
466:
463:
459:
456:
453:
452:) | (
449:
446:
443:
439:
436:
433:
429:
426:
423:
420:
417:
414:
411:
389:
379:natural numbers
367:
366:
363:
360:
357:
354:
351:
348:
345:
342:
328:
322:
317:
288:
258:
224:
217:
213:
206:recursive cases
194:
166:
131:Turing complete
110:
100:
43:
28:
23:
22:
15:
12:
11:
5:
9029:
9027:
9019:
9018:
9013:
9008:
9003:
8998:
8988:
8987:
8981:
8980:
8978:
8977:
8972:
8966:
8963:
8962:
8960:
8959:
8954:
8949:
8944:
8939:
8934:
8929:
8924:
8919:
8914:
8909:
8904:
8899:
8894:
8889:
8884:
8879:
8874:
8869:
8864:
8859:
8853:
8851:
8847:
8846:
8844:
8843:
8838:
8833:
8828:
8823:
8818:
8813:
8808:
8803:
8798:
8793:
8788:
8783:
8778:
8772:
8770:
8766:
8765:
8756:
8754:
8753:
8746:
8739:
8731:
8722:
8721:
8719:
8718:
8713:
8708:
8703:
8698:
8693:
8688:
8683:
8678:
8673:
8667:
8665:
8657:
8656:
8654:
8653:
8648:
8643:
8638:
8633:
8611:
8606:
8601:
8591:
8586:
8581:
8576:
8571:
8566:
8556:
8550:
8548:
8542:
8541:
8539:
8538:
8533:
8528:
8523:
8518:
8513:
8508:
8503:
8498:
8493:
8488:
8478:
8473:
8468:
8462:
8460:
8444:
8443:
8440:
8439:
8437:
8436:
8431:
8416:Transformation
8413:
8408:
8403:
8398:
8393:
8388:
8383:
8378:
8373:
8368:
8363:
8354:
8349:
8344:
8339:
8334:
8329:
8324:
8319:
8314:
8309:
8304:
8302:Differentiable
8299:
8289:
8282:Automata-based
8279:
8274:
8268:
8266:
8260:
8259:
8257:
8256:
8251:
8246:
8241:
8236:
8231:
8221:
8216:
8210:
8208:
8202:
8201:
8199:
8198:
8193:
8188:
8183:
8173:
8167:
8165:
8159:
8158:
8156:
8155:
8149:Function-level
8146:
8137:
8132:
8127:
8122:
8117:
8112:
8107:
8102:
8097:
8092:
8082:
8076:
8074:
8059:
8053:
8052:
8049:
8048:
8046:
8045:
8040:
8035:
8030:
8025:
8011:
8009:
7993:
7992:
7990:
7989:
7984:
7979:
7974:
7969:
7964:
7962:Non-structured
7959:
7954:
7949:
7943:
7941:
7932:
7926:
7925:
7915:
7913:
7912:
7905:
7898:
7890:
7883:
7882:
7864:(1): 312–318.
7850:
7844:
7818:
7807:
7801:
7782:
7776:
7757:
7751:
7738:
7732:
7713:
7707:
7688:
7681:
7657:
7655:
7652:
7649:
7648:
7634:978-0134610993
7633:
7618:Norvig, Peter.
7605:
7593:
7581:
7569:
7557:
7542:
7521:
7502:
7487:
7484:. CodeProject.
7472:
7453:
7439:
7417:
7396:
7375:
7354:
7332:
7307:
7300:
7280:
7273:
7253:
7246:
7216:
7209:
7179:
7164:
7140:
7133:
7111:Wirth, Niklaus
7102:
7095:
7071:
7045:
7038:
7015:
7014:
7012:
7009:
7008:
7007:
7002:
7000:Tak (function)
6997:
6992:
6987:
6982:
6977:
6971:
6969:Open recursion
6966:
6961:
6956:
6951:
6944:
6941:
6916:
6915:
6904:
6901:
6898:
6895:
6892:
6889:
6886:
6883:
6880:
6877:
6874:
6871:
6868:
6865:
6862:
6859:
6856:
6853:
6850:
6847:
6844:
6841:
6838:
6835:
6832:
6829:
6826:
6823:
6820:
6817:
6814:
6811:
6808:
6805:
6802:
6799:
6796:
6585:
6556:logic programs
6551:
6548:
6525:
6524:
6513:
6510:
6507:
6504:
6501:
6498:
6495:
6492:
6489:
6486:
6483:
6480:
6449:
6446:
6443:
6440:
6437:
6434:
6431:
6428:
6425:
6421:
6417:
6414:
6411:
6408:
6405:
6385:
6382:
6379:
6359:
6354:
6351:
6348:
6345:
6340:
6336:
6331:
6327:
6324:
6321:
6318:
6315:
6312:
6309:
6298:
6287:
6284:
6281:
6278:
6273:
6270:
6265:
6261:
6256:
6252:
6249:
6246:
6243:
6240:
6237:
6234:
6214:
6209:
6206:
6201:
6197:
6192:
6188:
6185:
6182:
6179:
6176:
6173:
6170:
6159:
6148:
6143:
6140:
6135:
6131:
6126:
6122:
6119:
6116:
6113:
6110:
6107:
6104:
6084:
6081:
6078:
6058:
6053:
6050:
6047:
6044:
6039:
6035:
6030:
6026:
6023:
6020:
6017:
6014:
6011:
6008:
5982:
5979:
5976:
5973:
5970:
5967:
5964:
5960:
5956:
5953:
5950:
5947:
5944:
5941:
5938:
5935:
5932:
5929:
5914:Main article:
5911:
5908:
5904:Big O notation
5891:
5888:
5434:
5425:tree traversal
5412:
5409:
5266:
5090:
5023:
5013:Main article:
5010:
5007:
4899:
4837:
4820:Main article:
4817:
4814:
4784:Main article:
4781:
4778:
4361:
4339:
4336:
4333:
4332:
4327:
4325:
4323:= 127 = 2 - 1
4320:
4316:
4312:
4308:
4304:
4300:
4296:
4294:
4291:
4290:
4279:
4278:
4235:
4232:
4231:
4214:
4213:
4209:
4206:
4205:
4199:
4198:
4187:
4184:
4179:
4175:
4164:
4153:
4150:
4145:
4142:
4139:
4135:
4131:
4128:
4123:
4119:
4101:
4100:
4087:
4082:
4079:
4076:
4066:
4064:
4061:
4058:
4055:
4052:
4049:
4046:
4043:
4040:
4037:
4034:
4031:
4030:
4027:
4024:
4021:
4011:
4009:
4006:
4005:
4003:
3998:
3995:
3992:
3989:
3986:
3983:
3954:Main article:
3943:
3940:
3933:
3932:
3842:
3839:
3838:
3821:tail-recursive
3815:
3814:
3810:
3807:
3806:
3802:
3801:
3798:
3795:
3794:
3788:
3787:
3776:
3773:
3770:
3767:
3764:
3761:
3758:
3755:
3745:
3734:
3731:
3728:
3708:
3705:
3702:
3699:
3696:
3693:
3690:
3687:
3684:
3681:
3678:
3675:
3672:
3669:
3666:
3643:
3639:
3635:
3622:expresses the
3611:
3608:
3605:
3589:
3588:
3578:2. otherwise,
3541:
3538:
3537:
3528:
3527:
3514:
3509:
3506:
3503:
3493:
3491:
3488:
3485:
3482:
3479:
3476:
3473:
3470:
3467:
3464:
3461:
3458:
3455:
3454:
3451:
3448:
3445:
3435:
3433:
3430:
3429:
3427:
3422:
3419:
3416:
3413:
3410:
3407:
3404:
3375:
3372:
3360:
3359:
3342:
3337:
3334:
3331:
3321:
3319:
3316:
3313:
3310:
3307:
3304:
3301:
3298:
3295:
3289:
3286:
3283:
3279:
3275:
3272:
3269:
3265:
3264:
3261:
3258:
3255:
3245:
3243:
3240:
3239:
3237:
3232:
3229:
3227:
3225:
3222:
3219:
3216:
3213:
3210:
3204:
3201:
3198:
3194:
3190:
3187:
3184:
3180:
3179:
3176:
3173:
3170:
3167:
3164:
3161:
3155:
3152:
3149:
3145:
3141:
3138:
3135:
3131:
3128:
3126:
3124:
3121:
3118:
3115:
3112:
3109:
3108:
3092:
3086:
3085:
2998:
2995:
2994:
2983:
2982:
2977:
2973:
2969:
2965:
2961:
2959:
2956:
2955:
2946:
2945:
2934:
2931:
2926:
2922:
2911:
2898:
2895:
2892:
2888:
2884:
2881:
2876:
2872:
2851:
2850:
2808:
2805:
2804:
2795:
2794:
2781:
2776:
2773:
2770:
2760:
2758:
2755:
2752:
2749:
2746:
2743:
2740:
2737:
2734:
2731:
2730:
2727:
2724:
2721:
2711:
2709:
2706:
2705:
2703:
2698:
2695:
2692:
2689:
2686:
2683:
2669:natural number
2660:
2657:
2655:
2652:
2540:
2537:
2534:
2440:
2437:
2434:
2429:
2426:
2416:
2415:
2328:
2325:
2229:
2225:
2224:
2221:
2218:Tail recursion
2187:
2184:
2147:
2144:
2120:tree traversal
2115:
2112:
2083:
2080:
2076:tail recursion
2055:
2052:
2019:
2016:
1944:
1941:
1839:
1821:
1820:
1815:
1813:
1811:
1806:
1804:
1795:
1791:
1787:
1783:
1769:tail recursion
1759:Recursion and
1756:
1753:
1741:insertion sort
1731:
1728:
1446:
1277:
1253:
1252:
1249:
1242:
1241:
1238:
1219:
1216:
1171:
1170:
1014:
1011:
927:
923:
922:
919:
904:
901:
876:
873:
868:
867:
864:
861:
852:
849:
848:
847:
843:
836:
832:infinite loops
828:
799:
729:
713:
710:
694:Main article:
691:
688:
598:Main article:
595:
592:
572:tree traversal
551:
548:
546:
543:
509:
486:
483:
410:
387:
341:
324:Main article:
321:
318:
287:
284:
193:
190:
165:
162:
113:Most computer
98:
26:
24:
14:
13:
10:
9:
6:
4:
3:
2:
9028:
9017:
9014:
9012:
9009:
9007:
9004:
9002:
8999:
8997:
8994:
8993:
8991:
8976:
8973:
8971:
8968:
8967:
8964:
8958:
8955:
8953:
8950:
8948:
8945:
8943:
8940:
8938:
8935:
8933:
8930:
8928:
8925:
8923:
8920:
8918:
8915:
8913:
8910:
8908:
8907:Hash function
8905:
8903:
8900:
8898:
8895:
8893:
8890:
8888:
8885:
8883:
8880:
8878:
8875:
8873:
8870:
8868:
8865:
8863:
8862:Binary search
8860:
8858:
8855:
8854:
8852:
8848:
8842:
8839:
8837:
8834:
8832:
8829:
8827:
8824:
8822:
8819:
8817:
8814:
8812:
8809:
8807:
8804:
8802:
8799:
8797:
8794:
8792:
8789:
8787:
8784:
8782:
8779:
8777:
8774:
8773:
8771:
8767:
8763:
8759:
8752:
8747:
8745:
8740:
8738:
8733:
8732:
8729:
8717:
8714:
8712:
8709:
8707:
8704:
8702:
8699:
8697:
8694:
8692:
8689:
8687:
8686:Data-oriented
8684:
8682:
8679:
8677:
8674:
8672:
8669:
8668:
8666:
8664:
8658:
8652:
8649:
8647:
8644:
8642:
8639:
8637:
8634:
8631:
8627:
8623:
8619:
8615:
8612:
8610:
8607:
8605:
8602:
8599:
8595:
8592:
8590:
8587:
8585:
8584:Homoiconicity
8582:
8580:
8577:
8575:
8572:
8570:
8567:
8564:
8560:
8557:
8555:
8552:
8551:
8549:
8547:
8543:
8537:
8534:
8532:
8529:
8527:
8524:
8522:
8519:
8517:
8514:
8512:
8509:
8507:
8504:
8502:
8499:
8497:
8494:
8492:
8491:Concurrent OO
8489:
8486:
8482:
8479:
8477:
8474:
8472:
8469:
8467:
8464:
8463:
8461:
8459:
8454:
8449:
8445:
8435:
8432:
8429:
8425:
8421:
8417:
8414:
8412:
8409:
8407:
8404:
8402:
8399:
8397:
8394:
8392:
8389:
8387:
8386:Set-theoretic
8384:
8382:
8379:
8377:
8374:
8372:
8369:
8367:
8366:Probabilistic
8364:
8362:
8358:
8355:
8353:
8350:
8348:
8345:
8343:
8340:
8338:
8335:
8333:
8330:
8328:
8325:
8323:
8320:
8318:
8315:
8313:
8310:
8308:
8305:
8303:
8300:
8297:
8293:
8290:
8287:
8283:
8280:
8278:
8275:
8273:
8270:
8269:
8267:
8265:
8261:
8255:
8252:
8250:
8247:
8245:
8242:
8240:
8237:
8235:
8232:
8229:
8225:
8222:
8220:
8217:
8215:
8212:
8211:
8209:
8207:
8203:
8197:
8194:
8192:
8189:
8187:
8184:
8181:
8177:
8174:
8172:
8169:
8168:
8166:
8164:
8160:
8154:
8150:
8147:
8145:
8144:Concatenative
8141:
8138:
8136:
8133:
8131:
8128:
8126:
8123:
8121:
8118:
8116:
8113:
8111:
8108:
8106:
8103:
8101:
8098:
8096:
8093:
8090:
8086:
8083:
8081:
8078:
8077:
8075:
8072:
8067:
8063:
8060:
8058:
8054:
8044:
8041:
8039:
8036:
8034:
8031:
8029:
8026:
8024:
8020:
8016:
8013:
8012:
8010:
8007:
8003:
7998:
7994:
7988:
7985:
7983:
7980:
7978:
7975:
7973:
7970:
7968:
7965:
7963:
7960:
7958:
7955:
7953:
7950:
7948:
7945:
7944:
7942:
7940:
7936:
7933:
7931:
7927:
7922:
7918:
7911:
7906:
7904:
7899:
7897:
7892:
7891:
7888:
7879:
7875:
7871:
7867:
7863:
7859:
7855:
7851:
7847:
7845:0-262-51087-1
7841:
7837:
7833:
7832:
7827:
7823:
7819:
7815:
7814:
7808:
7804:
7798:
7794:
7790:
7789:
7783:
7779:
7773:
7769:
7765:
7764:
7758:
7754:
7748:
7744:
7739:
7735:
7729:
7725:
7721:
7720:
7714:
7710:
7704:
7700:
7696:
7695:
7689:
7684:
7678:
7675:
7671:
7667:
7666:Gill, Stanley
7663:
7659:
7658:
7653:
7644:
7640:
7636:
7630:
7626:
7624:
7619:
7615:
7609:
7606:
7603:, p. 127
7602:
7597:
7594:
7590:
7585:
7582:
7578:
7573:
7570:
7566:
7561:
7558:
7553:
7546:
7543:
7538:
7537:
7532:
7525:
7522:
7517:
7513:
7506:
7503:
7498:
7491:
7488:
7483:
7476:
7473:
7468:
7464:
7457:
7454:
7449:
7443:
7440:
7435:
7431:
7427:
7421:
7418:
7413:
7412:
7407:
7400:
7397:
7392:
7391:
7386:
7379:
7376:
7364:
7358:
7355:
7343:
7336:
7333:
7318:
7311:
7308:
7303:
7301:9781285415017
7297:
7293:
7292:
7284:
7281:
7276:
7274:9781430232384
7270:
7266:
7265:
7257:
7254:
7249:
7243:
7239:
7235:
7230:
7229:
7220:
7217:
7212:
7210:9783540448334
7206:
7199:
7198:
7193:
7186:
7184:
7180:
7177:
7173:
7168:
7165:
7154:
7150:
7144:
7141:
7136:
7130:
7126:
7122:
7121:Prentice-Hall
7118:
7117:
7112:
7106:
7103:
7098:
7092:
7088:
7084:
7083:
7075:
7072:
7067:
7063:
7056:
7049:
7046:
7041:
7039:0-201-55802-5
7035:
7031:
7027:
7020:
7017:
7010:
7006:
7003:
7001:
6998:
6996:
6993:
6991:
6988:
6986:
6983:
6981:
6978:
6975:
6972:
6970:
6967:
6965:
6962:
6960:
6957:
6955:
6952:
6950:
6947:
6946:
6942:
6940:
6938:
6934:
6931:is a form of
6930:
6926:
6922:
6902:
6893:
6890:
6887:
6881:
6878:
6875:
6872:
6863:
6860:
6857:
6851:
6848:
6845:
6842:
6839:
6833:
6830:
6827:
6821:
6818:
6815:
6809:
6806:
6803:
6800:
6797:
6787:
6786:
6785:
6783:
6779:
6775:
6771:
6767:
6763:
6759:
6755:
6751:
6747:
6743:
6742:declaratively
6738:
6736:
6732:
6728:
6724:
6720:
6716:
6712:
6708:
6704:
6700:
6696:
6692:
6688:
6583:
6581:
6557:
6549:
6547:
6543:
6539:
6505:
6499:
6490:
6484:
6478:
6464:
6444:
6438:
6435:
6432:
6429:
6423:
6419:
6415:
6409:
6406:
6403:
6383:
6380:
6377:
6352:
6349:
6346:
6343:
6338:
6334:
6329:
6319:
6313:
6307:
6299:
6282:
6279:
6276:
6271:
6268:
6263:
6259:
6254:
6244:
6238:
6232:
6207:
6204:
6199:
6195:
6190:
6180:
6174:
6168:
6160:
6141:
6138:
6133:
6129:
6124:
6114:
6108:
6102:
6082:
6079:
6076:
6051:
6048:
6045:
6042:
6037:
6033:
6028:
6021:
6018:
6012:
6006:
5998:
5997:
5996:
5993:
5977:
5971:
5968:
5962:
5958:
5954:
5948:
5945:
5942:
5939:
5933:
5927:
5917:
5909:
5907:
5905:
5901:
5897:
5889:
5887:
5884:
5881:
5879:
5432:
5430:
5426:
5422:
5418:
5410:
5408:
5406:
5402:
5264:
5262:
5261:tree_contains
5230:tree_contains
5203:tree_contains
5098:tree_contains
5088:
5021:
5016:
5008:
4897:
4895:
4890:
4886:
4835:
4833:
4829:
4823:
4815:
4812:
4807:
4803:
4799:
4797:
4793:
4787:
4779:
4738:binary_search
4696:binary_search
4513:binary_search
4441:binary_search
4359:
4356:
4352:
4349:
4345:
4344:binary search
4338:Binary search
4337:
4326:In general: h
4293:
4292:
4288:
4287:
4284:
4275:
4270:
4264:
4260:
4255:
4251:
4247:
4243:
4238:
4234:
4233:
4230:(recursive):
4229:
4226:
4225:
4222:
4219:
4208:
4207:
4203:
4202:
4185:
4182:
4177:
4173:
4165:
4151:
4148:
4143:
4140:
4137:
4133:
4129:
4126:
4121:
4117:
4109:
4108:
4107:
4105:
4080:
4077:
4074:
4062:
4059:
4053:
4050:
4047:
4041:
4038:
4035:
4032:
4025:
4022:
4019:
4007:
4001:
3996:
3990:
3984:
3981:
3974:
3973:
3972:
3970:
3966:
3964:
3957:
3948:
3941:
3939:
3929:
3925:
3922:
3916:
3912:
3908:
3904:
3900:
3897:
3893:
3889:
3885:
3880:
3876:
3870:
3866:
3862:
3858:
3854:
3850:
3845:
3841:
3840:
3836:
3835:
3832:
3830:
3826:
3822:
3809:
3808:
3804:
3803:
3797:
3796:
3792:
3791:
3774:
3771:
3765:
3762:
3759:
3746:
3732:
3729:
3726:
3703:
3697:
3694:
3691:
3682:
3676:
3673:
3670:
3657:
3656:
3655:
3641:
3637:
3633:
3625:
3609:
3603:
3595:
3585:
3581:
3577:
3574:
3570:
3564:
3560:
3556:
3552:
3548:
3544:
3540:
3539:
3536:(recursive):
3535:
3532:
3531:
3507:
3504:
3501:
3483:
3480:
3477:
3471:
3468:
3465:
3462:
3449:
3446:
3443:
3431:
3425:
3420:
3414:
3411:
3408:
3395:
3394:
3393:
3391:
3387:
3385:
3381:
3373:
3371:
3369:
3365:
3335:
3332:
3329:
3314:
3311:
3308:
3305:
3302:
3299:
3293:
3259:
3256:
3253:
3241:
3235:
3230:
3228:
3220:
3217:
3214:
3208:
3171:
3168:
3165:
3159:
3129:
3127:
3119:
3113:
3110:
3099:
3098:
3097:
3082:
3078:
3077:running_total
3075:
3069:
3065:
3062:
3058:
3054:
3053:running_total
3050:
3049:running_total
3047:
3043:
3039:
3035:
3029:
3028:running_total
3025:
3019:
3014:
3010:
3006:
3002:factorial is:
3001:
2997:
2996:
2992:
2991:
2988:
2958:
2957:
2953:
2952:
2949:
2932:
2929:
2924:
2920:
2912:
2896:
2893:
2890:
2886:
2882:
2879:
2874:
2870:
2862:
2861:
2860:
2858:
2847:
2843:
2839:
2835:
2829:
2824:
2820:
2816:
2812:factorial is:
2811:
2807:
2806:
2803:(recursive):
2802:
2799:
2798:
2774:
2771:
2768:
2753:
2750:
2747:
2741:
2738:
2735:
2732:
2725:
2722:
2719:
2707:
2701:
2696:
2690:
2684:
2681:
2674:
2673:
2672:
2670:
2666:
2658:
2653:
2651:
2649:
2645:
2640:
2636:
2633:
2631:
2535:
2533:
2531:
2435:
2433:
2427:
2425:
2423:
2326:
2227:
2226:
2222:
2219:
2216:
2215:
2212:
2209:
2205:
2201:
2197:
2193:
2185:
2183:
2182:performance.
2181:
2177:
2173:
2169:
2165:
2161:
2157:
2153:
2145:
2143:
2141:
2137:
2133:
2129:
2125:
2121:
2113:
2111:
2109:
2105:
2101:
2098:
2093:
2089:
2082:Vulnerability
2081:
2079:
2077:
2073:
2069:
2065:
2061:
2053:
2051:
2048:
2044:
2039:
2037:
2033:
2029:
2025:
2017:
2015:
2013:
2009:
2005:
2001:
1997:
1993:
1989:
1985:
1981:
1977:
1972:
1970:
1966:
1962:
1958:
1954:
1950:
1942:
1837:
1835:
1831:
1826:
1812:
1803:
1802:
1799:
1780:
1778:
1774:
1770:
1766:
1762:
1754:
1752:
1750:
1746:
1742:
1738:
1729:
1727:
1725:
1720:
1514:// empty tree
1454:tree_contains
1444:
1414:tree_contains
1387:tree_contains
1282:tree_contains
1275:
1272:
1270:
1266:
1261:
1258:
1250:
1247:
1246:
1245:
1239:
1236:
1235:
1234:
1231:
1229:
1225:
1217:
1215:
1211:
1207:
1199:
1195:
1189:
1187:
1182:
1178:
924:
920:
917:
916:
907:
902:
900:
898:
894:
890:
884:
882:
874:
872:
865:
862:
859:
858:
857:
850:
844:
841:
840:loop variants
837:
833:
829:
826:
822:
818:
817:
816:
814:
805:
798:
796:
792:
788:
784:
780:
779:binary search
776:
772:
768:
766:
762:
755:
753:
745:
737:
736:
728:
723:
719:
711:
709:
707:
703:
697:
689:
687:
685:
681:
677:
673:
669:
665:
661:
657:
653:
649:
645:
640:
638:
634:
630:
626:
622:
618:
614:
610:
608:
601:
593:
591:
589:
585:
579:
575:
573:
569:
561:
549:
544:
542:
540:
536:
535:prime numbers
531:
526:
516:
508:
506:
501:
496:
492:
484:
482:
408:
406:
402:
398:
394:
386:
384:
381:(or positive
380:
376:
371:
364:ListOfStrings
346:ListOfStrings
339:
337:
333:
327:
319:
316:
311:
310:definitions.
309:
305:
301:
297:
293:
285:
283:
281:
277:
273:
269:
263:
262:
256:
251:
249:
248:infinite loop
245:
239:
235:
231:
227:
220:
216:and, for all
211:
207:
203:
199:
191:
189:
187:
183:
179:
175:
171:
163:
161:
159:
155:
151:
146:
136:
132:
128:
124:
120:
116:
107:
103:
102:Niklaus Wirth
97:
92:
90:
86:
82:
78:
74:
66:
61:
54:
49:
45:
41:
37:
33:
19:
8932:Root-finding
8926:
8857:Backtracking
8821:Segment tree
8791:Fenwick tree
8691:Event-driven
8095:Higher-order
8079:
8023:Object-based
7861:
7857:
7830:
7812:
7787:
7762:
7742:
7718:
7693:
7669:
7621:
7608:
7596:
7584:
7572:
7560:
7545:
7534:
7524:
7505:
7490:
7475:
7467:ThoughtWorks
7456:
7442:
7429:
7420:
7409:
7399:
7388:
7378:
7367:. Retrieved
7357:
7346:. Retrieved
7335:
7324:. Retrieved
7310:
7290:
7283:
7263:
7256:
7227:
7219:
7196:
7167:
7156:. Retrieved
7152:
7143:
7115:
7105:
7081:
7074:
7065:
7061:
7048:
7029:
7019:
6976:(in general)
6917:
6781:
6777:
6773:
6769:
6765:
6761:
6757:
6753:
6749:
6739:
6734:
6730:
6726:
6722:
6714:
6710:
6706:
6702:
6698:
6694:
6690:
6686:
6684:
6553:
6541:
6537:
6526:
6462:
5994:
5919:
5893:
5885:
5882:
5875:
5439:java.io.File
5414:
5398:
5319:// base case
5260:
5258:
5158:// base case
5086:
5018:
5009:Binary trees
4946:// base case
4893:
4888:
4884:
4883:Because the
4882:
4831:
4827:
4825:
4816:Linked lists
4809:
4805:
4801:
4789:
4357:
4353:
4348:sorted array
4341:
4282:
4273:
4268:
4262:
4258:
4253:
4249:
4248:, such that
4245:
4241:
4236:
4220:
4217:
4103:
4102:
3968:
3967:
3962:
3959:
3936:
3927:
3923:
3920:
3914:
3910:
3906:
3902:
3898:
3895:
3891:
3887:
3883:
3878:
3874:
3868:
3864:
3860:
3856:
3852:
3848:
3843:
3828:
3824:
3818:
3592:
3583:
3579:
3575:
3572:
3568:
3562:
3558:
3554:
3550:
3546:
3542:
3389:
3388:
3377:
3361:
3089:
3080:
3076:
3073:
3067:
3063:
3060:
3056:
3052:
3048:
3045:
3041:
3037:
3033:
3027:
3023:
3017:
3012:
3008:
3004:
2999:
2986:
2968:= 4 × (3 × b
2947:
2854:
2845:
2841:
2837:
2833:
2827:
2822:
2818:
2814:
2809:
2662:
2643:
2641:
2637:
2634:
2627:
2527:
2431:
2419:
2195:
2189:
2156:stack memory
2154:in place of
2149:
2117:
2088:pathological
2085:
2057:
2040:
2021:
1973:
1946:
1827:
1824:
1786:defined by x
1781:
1758:
1733:
1724:control flow
1716:
1442:
1342:// base case
1273:
1268:
1262:
1256:
1254:
1243:
1232:
1228:binary trees
1221:
1212:
1205:
1197:
1193:
1190:
1180:
1176:
1174:
906:
885:
878:
869:
854:
838:In terms of
810:
803:
764:
760:
757:
747:
746:
742:
733:
725:
721:
699:
683:
679:
675:
671:
667:
663:
659:
655:
651:
647:
641:
636:
632:
631:which calls
628:
624:
620:
616:
612:
606:
605:
603:
580:
576:
563:
555:
553:
527:
512:
502:
498:
475:
390:
372:
368:
332:linked lists
329:
289:
279:
275:
259:
252:
240:
233:
229:
225:
218:
205:
197:
195:
178:lookup table
167:
147:
112:
105:
96:repetitions.
94:
76:
70:
44:
9016:Subroutines
8811:Linked list
8701:Intentional
8681:Data-driven
8663:of concerns
8622:Inferential
8609:Multi-stage
8589:Interactive
8466:Actor-based
8453:distributed
8396:Stack-based
8196:Synchronous
8153:Value-level
8140:Applicative
8057:Declarative
8015:Class-based
7682:356-02201-3
7512:"wildmat.c"
6933:abstraction
5826:isDirectory
5631:isDirectory
5388:// go right
5015:Binary tree
4896:procedure.
4885:struct node
4832:struct node
4828:struct node
4822:Linked list
4263:then return
3561:> 0 and
2204:interpreter
2152:heap memory
2106:from being
2054:Stack space
1980:while loops
1103:fac2wrapper
889:memoization
495:Corecursion
491:Coinduction
397:expressions
393:definitions
308:coinductive
272:corecursion
186:memoization
8990:Categories
8947:Sweep line
8922:Randomized
8850:Algorithms
8801:Hash table
8762:algorithms
8676:Components
8661:Separation
8636:Reflective
8630:by example
8574:Extensible
8448:Concurrent
8424:Production
8411:Templating
8391:Simulation
8376:Scientific
8296:Spacecraft
8224:Constraint
8219:Answer set
8171:Flow-based
8071:comparison
8066:Functional
8038:Persistent
8002:comparison
7967:Procedural
7939:Structured
7930:Imperative
7708:0262062186
7654:References
7625:§9.3, §9.4
7601:Wirth 1976
7369:2012-09-03
7348:2012-09-03
7326:2012-09-03
7236:. p.
7158:2020-10-21
7123:. p.
7068:: 169–175.
5832:&&
5637:&&
5451:FileSystem
5419:may vary,
5417:filesystem
5370:tree_print
5340:// go left
5322:tree_print
5274:tree_print
4979:list_print
4904:list_print
4894:list_print
4889:list_print
4244:: integer
4228:Pseudocode
3859:such that
3855:, integer
3851:: integer
3557:such that
3553:, integer
3549:: integer
3534:Pseudocode
3083:factorial
3011:such that
3007:: integer
2848:factorial
2821:such that
2817:: integer
2801:Pseudocode
2648:call stack
2536:Function 2
2436:Function 1
2422:call stack
2192:tail calls
2162:, such as
2108:terminated
2060:call stack
2008:tail calls
1961:call stack
1765:call stack
1737:merge sort
1685:&&
1643:&&
1625:// recurse
1267:of height
727:FUNCTIONS.
716:See also:
517:functions
401:statements
375:definition
300:programmer
198:base cases
150:call stack
9001:Recursion
8942:Streaming
8927:Recursion
8563:Inductive
8559:Automatic
8381:Scripting
8080:Recursive
7878:127891023
7836:MIT Press
7724:CRC Press
7699:MIT Press
6974:Recursion
6923:), as in
6870:→
6840:∧
6795:∀
6719:backwards
6582:clauses:
6494:Θ
6436:⋅
6430:≤
6407:⋅
6396:, and if
6378:ε
6353:ε
6344:
6323:Ω
6280:
6269:
6248:Θ
6205:
6184:Θ
6139:
6118:Θ
6077:ε
6052:ε
6049:−
6043:
5946:⋅
5878:iteration
5850:rtraverse
5733:listFiles
5700:rtraverse
5655:rtraverse
5538:listRoots
5421:recursion
5376:tree_node
5355:tree_node
5328:tree_node
5304:tree_node
5289:tree_node
5236:tree_node
5209:tree_node
5170:tree_node
5137:tree_node
5113:tree_node
4239:hanoi is:
4141:−
4051:−
4042:
4036:⋅
3985:
3911:remainder
3899:remainder
3890:is zero,
3879:remainder
3730:≠
3701:%
3624:remainder
3607:%
3472:
3469:remainder
3303:−
3294:
3209:
3160:
3114:
3061:decrement
2894:−
2751:−
2742:
2736:⋅
2685:
2665:factorial
2659:Factorial
2180:profiling
2164:Rich Salz
2132:Quicksort
2092:malicious
2036:tail call
1984:for loops
1957:instances
1847:factorial
1830:factorial
1761:iteration
1694:tree_node
1676:tree_node
1652:tree_node
1634:tree_node
1592:tree_node
1568:tree_node
1529:tree_node
1493:tree_node
1469:tree_node
1420:tree_node
1393:tree_node
1354:tree_node
1321:tree_node
1297:tree_node
1210:savings.
846:analysis.
783:mergesort
775:quicksort
654:and then
609:recursion
352:EmptyList
338:syntax):
278:th term (
268:parameter
210:factorial
202:trivially
192:Base case
168:A common
158:tail call
154:efficient
89:functions
87:by using
77:recursion
40:Recursion
8716:Subjects
8706:Literate
8696:Features
8651:Template
8646:Symbolic
8618:Bayesian
8598:Hygienic
8458:parallel
8337:Modeling
8332:Low-code
8307:End-user
8244:Ontology
8176:Reactive
8163:Dataflow
7643:20190474
7620:(2021).
7589:Epp 1995
7577:Epp 1995
7113:(1976).
6943:See also
6921:forwards
5514:traverse
5484:traverse
4237:function
4070:if
4015:if
3871:>= 0
3844:function
3565:>= 0
3545:gcd is:
3543:function
3497:if
3439:if
3366:such as
3325:if
3249:if
3000:function
2810:function
2764:if
2715:if
2605:"%d
2469:"%d
2200:compiler
2130:such as
2043:compiler
1868:unsigned
1853:unsigned
1841:unsigned
1794:) from x
1790:= f(n, x
1619:// found
800:—
791:fractals
730:—
613:Indirect
515:accessor
383:integers
99:—
8937:Sorting
8912:Minimax
8671:Aspects
8579:Generic
8569:Dynamic
8428:Pattern
8406:Tactile
8371:Quantum
8361:filters
8292:Command
8191:Streams
8186:Signals
7957:Modular
7668:(ed.).
7436:. 2018.
6925:Datalog
6471:, then
6225:, then
6095:, then
5841:canRead
5802:println
5691:private
5646:canRead
5607:println
5505:private
4498:OUTPUT:
4381:OUTPUT:
4261:n is 1
3846:gcd is:
3015:>= 0
2964:= 4 × b
2825:>= 0
2168:wildmat
2104:process
1931:product
1904:product
1874:product
1749:Timsort
670:alone,
505:streams
377:is the
336:Haskell
123:Clojure
8917:Online
8902:Greedy
8831:String
8434:Visual
8401:System
8286:Action
8110:Strict
7876:
7842:
7799:
7774:
7749:
7730:
7705:
7679:
7641:
7631:
7516:GitHub
7298:
7271:
7244:
7207:
7131:
7093:
7036:
6580:Prolog
6527:where
6465:< 1
5790:System
5772:length
5694:static
5595:System
5577:length
5508:static
5472:String
5460:static
5457:public
5445:public
5436:import
5343:printf
5280:struct
5200:return
5188:return
5149:return
5104:struct
5064:struct
5046:struct
5025:struct
4952:printf
4910:struct
4860:struct
4839:struct
4750:toFind
4735:return
4708:toFind
4693:return
4684:toFind
4660:return
4651:toFind
4627:return
4534:toFind
4483:INPUT:
4453:toFind
4438:return
4414:toFind
4393:search
4369:INPUT:
4276:hanoi
4269:return
4252:>=
3921:return
3915:repeat
3875:create
3863:>=
3580:return
3573:return
3571:is 0,
3567:1. if
3368:Scheme
3074:return
3068:repeat
3040:is 0,
3024:create
3018:output
2842:return
2838:return
2836:is 0,
2832:1. if
2828:output
2611:"
2599:printf
2475:"
2463:printf
2384:return
2372:return
2294:return
2282:return
2122:as in
2072:Python
2004:Python
2002:, and
1928:return
1628:return
1610:return
1559:struct
1520:return
1505:return
1460:struct
1384:return
1372:return
1333:return
1288:struct
1257:before
1181:before
1151:return
1139:return
1070:return
1058:return
980:return
968:return
871:this.
806:, 2002
793:, and
738:, 2001
658:calls
650:calls
627:calls
619:calls
607:direct
427:number
361:String
255:series
221:> 0
214:0! = 1
108:, 1976
8826:Stack
8816:Queue
8796:Graph
8776:Array
8711:Roles
8594:Macro
8357:Pipes
8277:Array
8254:Query
8206:Logic
8115:GADTs
8105:Total
8028:Agent
7874:S2CID
7768:Wiley
7320:(PDF)
7234:Wiley
7201:(PDF)
7058:(PDF)
7011:Notes
5448:class
5382:right
5379:->
5358:->
5331:->
5242:right
5239:->
5212:->
5173:->
5073:right
4988:->
4967:->
4796:trees
4792:lists
4714:start
4612:start
4588:start
4573:start
4543:start
4465:count
4423:count
4271:+ 1]
4242:input
4039:hanoi
3982:hanoi
3917:loop
3909:y to
3884:begin
3849:input
3547:input
3070:loop
3034:begin
3005:input
2815:input
2667:of a
2644:order
2208:jumps
2176:tests
2140:stack
2100:logic
1969:stack
1947:Most
1889:while
1700:right
1697:->
1682:right
1679:->
1655:->
1637:->
1595:->
1508:false
1426:right
1423:->
1396:->
1357:->
1336:false
1130:<=
959:<=
290:Many
236:− 1)!
139:while
8897:Fold
8841:Trie
8836:Tree
8806:Heap
8760:and
8359:and
8006:list
7840:ISBN
7797:ISBN
7772:ISBN
7747:ISBN
7728:ISBN
7703:ISBN
7639:LCCN
7629:ISBN
7296:ISBN
7269:ISBN
7242:ISBN
7205:ISBN
7129:ISBN
7091:ISBN
7034:ISBN
6756:and
6689:to
6665:path
6626:path
6587:path
6381:>
6080:>
5894:The
5763:<
5718:File
5706:File
5697:void
5568:<
5532:File
5523:File
5511:void
5475:args
5466:main
5463:void
5361:data
5334:left
5310:NULL
5283:node
5271:void
5215:left
5197:else
5176:data
5161:else
5143:NULL
5107:node
5067:node
5055:left
5049:node
5037:data
5028:node
4991:next
4985:list
4970:data
4964:list
4940:NULL
4934:list
4919:list
4913:node
4901:void
4869:next
4863:node
4851:data
4842:node
4794:and
4744:data
4729:else
4702:data
4681:>
4678:data
4669:else
4645:data
4636:else
4615:>
4525:data
4447:data
4405:data
4342:The
4078:>
3930:gcd
3892:exit
3867:and
3827:and
3586:gcd
3505:>
3378:The
3333:>
3111:fact
3051:to (
3042:exit
2772:>
2739:fact
2682:fact
2572:<
2542:void
2496:<
2442:void
2393:fact
2381:else
2336:fact
2291:else
2178:and
2064:heap
2028:Java
2026:and
2000:Java
1982:and
1816:base
1807:base
1796:base
1658:left
1640:left
1622:else
1613:true
1598:data
1562:node
1550:bool
1517:else
1499:NULL
1463:node
1451:bool
1399:left
1381:else
1375:true
1360:data
1345:else
1327:NULL
1291:node
1279:bool
1154:fac2
1148:else
1073:fac2
1067:else
1019:fac2
983:fac1
977:else
932:fac1
761:HtDP
682:and
539:here
530:lazy
523:tail
521:and
519:head
493:and
470:>
467:expr
464:<
460:>
457:expr
454:<
450:>
447:expr
444:<
440:>
437:expr
434:<
430:>
424:<
418:>
415:expr
412:<
399:and
358:Cons
343:data
296:data
257:for
228:! =
141:and
8264:DSL
7866:doi
7677:SBN
7238:115
7125:126
7087:427
6939:).
6780:to
6772:to
6764:to
6725:to
6713:to
6705:to
6697:to
6647:arc
6608:arc
6335:log
6300:If
6277:log
6260:log
6196:log
6161:If
6130:log
6034:log
5999:If
5902:of
5856:fss
5844:())
5835:fss
5820:fss
5808:fss
5796:out
5766:fss
5745:int
5739:for
5736:();
5721:fss
5676:/**
5649:())
5601:out
5550:int
5544:for
5541:();
5493:/**
5487:();
5119:int
5095:int
5034:int
4848:int
4768:end
4756:mid
4720:mid
4663:mid
4618:end
4582:end
4567:mid
4564:int
4552:end
4549:int
4540:int
4531:int
4519:int
4510:int
4420:int
4411:int
4399:int
4390:int
4274:end
4267:2.
4257:1.
3928:end
3919:3.
3913:5.
3907:set
3903:set
3896:set
3882:2.
3873:1.
3754:gcd
3719:if
3686:gcd
3665:gcd
3626:of
3584:end
3457:gcd
3403:gcd
3081:end
3072:3.
3066:4.
3046:set
3032:2.
3022:1.
3020::
2846:end
2830::
2617:num
2587:num
2569:num
2554:num
2551:int
2511:num
2493:num
2481:num
2454:num
2451:int
2342:int
2333:int
2297:gcd
2252:int
2243:int
2237:gcd
2234:int
2202:or
2196:not
2090:or
1871:int
1856:int
1844:int
1792:n-1
1709:));
1574:int
1475:int
1303:int
1208:(1)
1109:int
1100:int
1025:int
1016:int
938:int
929:int
771:gcd
541:).
432:| (
421:::=
385:):
184:or
143:for
71:In
8992::
8628:,
8624:,
8620:,
8426:,
8422:,
8151:,
8142:,
8021:,
8017:,
8004:,
7872:.
7860:.
7838:.
7824:;
7795:.
7791:.
7770:.
7766:.
7726:.
7722:.
7701:.
7697:.
7637:.
7616:;
7533:.
7514:.
7465:.
7432:.
7428:.
7408:.
7387:.
7240:.
7182:^
7174:,
7151:.
7127:.
7119:.
7089:.
7066:19
7064:.
7060:.
7028:.
6752:,
6737:.
6680:).
6662:),
6644::-
6623:).
6605::-
6564::-
5859:);
5829:()
5814:if
5811:);
5781:++
5727:fd
5709:fd
5688:*/
5664:);
5661:fs
5640:fs
5634:()
5625:fs
5619:if
5616:);
5613:fs
5586:++
5571:fs
5526:fs
5517:()
5502:*/
5385:);
5364:);
5337:);
5307:!=
5298:if
5251:);
5227:||
5179:==
5164:if
5140:==
5131:if
5082:};
4994:);
4973:);
4937:!=
4928:if
4878:};
4771:);
4726:);
4723:-1
4672:if
4648:==
4639:if
4630:-1
4606:if
4507:*/
4477:/*
4471:);
4468:-1
4387:*/
4363:/*
4265:1
4259:if
4106::
3971::
3654::
3392::
3096::
3055:×
2859::
2671::
2650:.
2620:);
2608:\n
2596:);
2563:if
2520:);
2487:if
2484:);
2472:\n
2408:);
2363:==
2354:if
2318:);
2273:==
2264:if
2220::
2166:'
2110:.
2078:.
2070:;
1998:,
1916:--
1907:*=
1798::
1670:||
1667:))
1601:==
1586:if
1538:);
1496:==
1487:if
1435:);
1411:||
1363:==
1348:if
1324:==
1315:if
1269:h,
1163:);
1121:if
1082:-1
1049:==
1040:if
992:-1
950:if
899:.
879:A
789:,
785:,
781:,
777:,
773:,
708:.
660:f,
637:f.
633:f,
621:f,
472:)
462:+
442:*
250:.
223:,
188:.
145:.
104:,
75:,
8750:e
8743:t
8736:v
8632:)
8616:(
8600:)
8596:(
8565:)
8561:(
8487:)
8483:(
8455:,
8450:,
8430:)
8418:(
8298:)
8294:(
8288:)
8284:(
8230:)
8226:(
8182:)
8178:(
8091:)
8087:(
8073:)
8069:(
8008:)
8000:(
7923:)
7919:(
7909:e
7902:t
7895:v
7880:.
7868::
7862:2
7848:.
7816:.
7805:.
7780:.
7755:.
7736:.
7711:.
7685:.
7645:.
7539:.
7518:.
7499:.
7469:.
7414:.
7393:.
7372:.
7351:.
7329:.
7305:.
7278:.
7250:.
7213:.
7161:.
7137:.
7099:.
7042:.
6903:.
6900:)
6897:)
6894:Y
6891:,
6888:X
6885:(
6882:h
6879:t
6876:a
6873:p
6867:)
6864:Y
6861:,
6858:Z
6855:(
6852:h
6849:t
6846:a
6843:p
6837:)
6834:Z
6831:,
6828:X
6825:(
6822:c
6819:r
6816:a
6813:(
6810:Z
6807:,
6804:Y
6801:,
6798:X
6782:Y
6778:X
6774:Y
6770:Z
6766:Z
6762:X
6758:Z
6754:Y
6750:X
6735:Y
6731:X
6727:Y
6723:Z
6715:Y
6711:Z
6707:Z
6703:X
6699:Y
6695:X
6691:Y
6687:X
6677:Y
6674:,
6671:Z
6668:(
6659:Z
6656:,
6653:X
6650:(
6641:)
6638:Y
6635:,
6632:X
6629:(
6620:Y
6617:,
6614:X
6611:(
6602:)
6599:Y
6596:,
6593:X
6590:(
6576:B
6572:A
6567:B
6561:A
6544:)
6542:n
6540:(
6538:f
6533:b
6529:a
6512:)
6509:)
6506:n
6503:(
6500:f
6497:(
6491:=
6488:)
6485:n
6482:(
6479:T
6469:n
6463:c
6448:)
6445:n
6442:(
6439:f
6433:c
6427:)
6424:b
6420:/
6416:n
6413:(
6410:f
6404:a
6384:0
6358:)
6350:+
6347:a
6339:b
6330:n
6326:(
6320:=
6317:)
6314:n
6311:(
6308:f
6286:)
6283:n
6272:a
6264:b
6255:n
6251:(
6245:=
6242:)
6239:n
6236:(
6233:T
6213:)
6208:a
6200:b
6191:n
6187:(
6181:=
6178:)
6175:n
6172:(
6169:f
6147:)
6142:a
6134:b
6125:n
6121:(
6115:=
6112:)
6109:n
6106:(
6103:T
6083:0
6057:)
6046:a
6038:b
6029:n
6025:(
6022:O
6019:=
6016:)
6013:n
6010:(
6007:f
5981:)
5978:n
5975:(
5972:f
5969:+
5966:)
5963:b
5959:/
5955:n
5952:(
5949:T
5943:a
5940:=
5937:)
5934:n
5931:(
5928:T
5871:}
5868:}
5865:}
5862:}
5853:(
5847:{
5838:.
5823:.
5817:(
5805:(
5799:.
5793:.
5787:{
5784:)
5778:i
5775:;
5769:.
5760:i
5757:;
5754:0
5751:=
5748:i
5742:(
5730:.
5724:=
5715:{
5712:)
5703:(
5682:*
5673:}
5670:}
5667:}
5658:(
5652:{
5643:.
5628:.
5622:(
5610:(
5604:.
5598:.
5592:{
5589:)
5583:i
5580:;
5574:.
5565:i
5562:;
5559:0
5556:=
5553:i
5547:(
5535:.
5529:=
5520:{
5490:}
5481:{
5478:)
5469:(
5454:{
5442:;
5394:}
5391:}
5373:(
5352:,
5346:(
5325:(
5316:{
5313:)
5301:(
5295:{
5292:)
5286:*
5277:(
5254:}
5248:i
5245:,
5233:(
5224:)
5221:i
5218:,
5206:(
5194:;
5191:1
5185:)
5182:i
5167:(
5155:;
5152:0
5146:)
5134:(
5128:{
5125:)
5122:i
5116:,
5110:*
5101:(
5076:;
5070:*
5058:;
5052:*
5040:;
5031:{
5003:}
5000:}
4982:(
4961:,
4955:(
4949:{
4943:)
4931:(
4925:{
4922:)
4916:*
4907:(
4872:;
4866:*
4854:;
4845:{
4774:}
4765:,
4762:1
4759:+
4753:,
4747:,
4741:(
4717:,
4711:,
4705:,
4699:(
4687:)
4675:(
4666:;
4654:)
4642:(
4633:;
4621:)
4609:(
4600:;
4597:2
4594:/
4591:)
4585:-
4579:(
4576:+
4570:=
4558:{
4555:)
4546:,
4537:,
4528:,
4522:*
4516:(
4474:}
4462:,
4459:0
4456:,
4450:,
4444:(
4429:{
4426:)
4417:,
4408:,
4402:*
4396:(
4328:n
4321:7
4317:6
4313:5
4309:4
4305:3
4301:2
4297:1
4295:h
4254:1
4250:n
4246:n
4186:1
4183:=
4178:1
4174:h
4152:1
4149:+
4144:1
4138:n
4134:h
4130:2
4127:=
4122:n
4118:h
4081:1
4075:n
4063:1
4060:+
4057:)
4054:1
4048:n
4045:(
4033:2
4026:1
4023:=
4020:n
4008:1
4002:{
3997:=
3994:)
3991:n
3988:(
3963:n
3924:x
3888:y
3869:y
3865:y
3861:x
3857:y
3853:x
3829:y
3825:x
3775:x
3772:=
3769:)
3766:0
3763:,
3760:x
3757:(
3733:0
3727:y
3707:)
3704:y
3698:x
3695:,
3692:y
3689:(
3683:=
3680:)
3677:y
3674:,
3671:x
3668:(
3642:y
3638:/
3634:x
3610:y
3604:x
3576:x
3569:y
3563:y
3559:x
3555:y
3551:x
3508:0
3502:y
3490:)
3487:)
3484:y
3481:,
3478:x
3475:(
3466:,
3463:y
3460:(
3450:0
3447:=
3444:y
3432:x
3426:{
3421:=
3418:)
3415:y
3412:,
3409:x
3406:(
3336:0
3330:n
3318:)
3315:t
3312:n
3309:,
3306:1
3300:n
3297:(
3288:c
3285:c
3282:a
3278:t
3274:c
3271:a
3268:f
3260:0
3257:=
3254:n
3242:t
3236:{
3231:=
3224:)
3221:t
3218:,
3215:n
3212:(
3203:c
3200:c
3197:a
3193:t
3189:c
3186:a
3183:f
3175:)
3172:1
3169:,
3166:n
3163:(
3154:c
3151:c
3148:a
3144:t
3140:c
3137:a
3134:f
3130:=
3123:)
3120:n
3117:(
3093:t
3064:n
3057:n
3038:n
3013:n
3009:n
2978:0
2974:1
2970:2
2966:3
2962:4
2960:b
2933:1
2930:=
2925:0
2921:b
2897:1
2891:n
2887:b
2883:n
2880:=
2875:n
2871:b
2834:n
2823:n
2819:n
2775:0
2769:n
2757:)
2754:1
2748:n
2745:(
2733:n
2726:0
2723:=
2720:n
2708:1
2702:{
2697:=
2694:)
2691:n
2688:(
2623:}
2614:,
2602:(
2593:1
2590:+
2584:(
2578:)
2575:4
2566:(
2560:{
2557:)
2548:(
2523:}
2517:1
2514:+
2508:(
2502:)
2499:4
2490:(
2478:,
2466:(
2460:{
2457:)
2448:(
2411:}
2405:1
2402:-
2399:n
2396:(
2390:*
2387:n
2378:;
2375:1
2369:)
2366:0
2360:n
2357:(
2351:{
2348:)
2345:n
2339:(
2321:}
2315:y
2312:%
2309:x
2306:,
2303:y
2300:(
2288:;
2285:x
2279:)
2276:0
2270:y
2267:(
2261:{
2258:)
2255:y
2249:,
2246:x
2240:(
2024:C
1996:C
1937:}
1934:;
1925:}
1922:;
1919:n
1913:;
1910:n
1901:{
1898:)
1895:n
1892:(
1883:;
1880:1
1877:=
1865:{
1862:)
1859:n
1850:(
1834:C
1788:n
1784:n
1712:}
1706:i
1703:,
1691:(
1673:(
1664:i
1661:,
1649:(
1631:(
1616:;
1607:)
1604:i
1589:(
1583:{
1580:)
1577:i
1571:,
1565:*
1556:(
1544:}
1535:i
1532:,
1526:(
1511:;
1502:)
1490:(
1484:{
1481:)
1478:i
1472:,
1466:*
1457:(
1438:}
1432:i
1429:,
1417:(
1408:)
1405:i
1402:,
1390:(
1378:;
1369:)
1366:i
1351:(
1339:;
1330:)
1318:(
1312:{
1309:)
1306:i
1300:,
1294:*
1285:(
1206:O
1200:)
1198:n
1196:(
1194:O
1186:C
1166:}
1160:n
1157:(
1145:;
1142:1
1136:)
1133:1
1127:n
1124:(
1118:{
1115:)
1112:n
1106:(
1097:}
1094:;
1091:n
1088:*
1085:)
1079:n
1076:(
1064:;
1061:2
1055:)
1052:2
1046:n
1043:(
1034:{
1031:)
1028:n
1022:(
1007:}
1004:;
1001:n
998:*
995:)
989:n
986:(
974:;
971:1
965:)
962:0
956:n
953:(
947:{
944:)
941:n
935:(
797:.
767:)
763:(
684:g
680:f
676:g
672:f
668:f
664:g
656:g
652:g
648:f
629:g
625:f
617:f
355:|
349:=
280:n
276:n
261:e
234:n
232:(
230:n
226:n
219:n
42:.
20:)
Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.