1 / 17

# Recursion - PowerPoint PPT Presentation

Recursion. Chapter 11. Chapter Contents. Recursive Definitions Base and General Cases of Recursion What is a Recursive Algorithm Recursive Functions Using Recursive Functions. Recursive Definitions.

Related searches for Recursion

I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.

## PowerPoint Slideshow about 'Recursion' - xuxa

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

### Recursion

Chapter 11

• Recursive Definitions

• Base and General Cases of Recursion

• What is a Recursive Algorithm

• Recursive Functions

• Using Recursive Functions

• Definition:The process of solving a problem by reducing it to smaller versions of itself is called recursion.

• Example:Consider the concept of factorials 0! = 1 1! = 1 2! = 1 * 2 3! = 1 * 2 * 3 . . . n! = 1 * 2 * 3 * 4 * … * (n – 1) * n

General Case

Recursive Algorithm

• The factorial of a number could be defined recursively

General Case

Base and General Cases of Recursion

• Every recursive definition must have one (or more) base cases.

• The general case must eventually reduce to a base case.

• The base case stops the recursion

• This would be the recursive function for the recursive factorial algorithm

int fact (int num)

{ if (num == 0) return 1; else return num * fact (num – 1);}

• Execution ofa call to therecursive factorial functioncout << fact(4);

• Think of a recursive function as having infinitely many copies of itself.

• Every call to a recursive function has

• its own code and

• its own set of parameters and

• its own local variables.

• After completing a particular recursive call,

• Control goes back to the calling environment

• That is, the previous call.

• The current (recursive) call must execute completely before the control goes back to the previous call.

• The execution in the previous call begins from the point immediately following the recursive call.

• A recursive function in which the last statement executed is the recursive call is called a tail recursive function.

• The function fact is an example of a tail recursive function.

• Consider the task of finding the largest element of an array

• To find the largest element in list[a]...list[b]

• First find the largest element in list[a+1]...list[b]

• Then compare this largest element with list[a].

• Note the source code

• Execution ofthe recursivefunctionlargest()

• Example of Fibonacci number

• a denotes the first Fibonacci number

• b is the second Fibonacci number

• n is the nth Fibonacci number:

• Note Fibonacci source code

• Note diagram ofrecursiveFibonacci function call

• Very inefficient

• Iterative control structures use a looping structure to repeat a set of statements.

• while,

• for,

• or do...while,

• There are usually two ways to solve a particular problem

• iteration and

• recursion.

• The obvious question …

Which method is better?

• Another key factor in determining the best solution method is efficiency.

• Recall that whenever a function is called,

• Memory space for its formal parameters and local variables is allocated.

• When the function terminates, that memory space is then deallocated.

• We also know that every (recursive) call has its own set of parameters and (automatic) local variables.

• Overhead involved with recursion

• Memory space

• Time of execution

• Today’s computers

• fast

• inexpensive memory

• Therefore, the execution of a recursion function is not noticeable.

• Rule of thumb:If an iterative solution is

• more obvious

• easier to understand than a recursive solution

Use the iterative solution, which would be more efficient.

• When the recursive solution is more obvious or easier to construct … use recursion

Fibonacci numbers

Tower of Hanoi