Recursion - PowerPoint PPT Presentation

1 / 31
About This Presentation
Title:

Recursion

Description:

Explore the base case and the general case of a recursive definition ... Recursive Fibonacci. int rFibNum(int a, int b, int n) if(n == 1) return a; else if(n == 2) ... – PowerPoint PPT presentation

Number of Views:299
Avg rating:3.0/5.0
Slides: 32
Provided by: manasi64
Category:

less

Transcript and Presenter's Notes

Title: Recursion


1
Chapter 6
  • Recursion

2
Chapter Objectives
  • Learn about recursive definitions
  • Explore the base case and the general case of a
    recursive definition
  • Discover recursive algorithms
  • Learn about recursive functions
  • Explore how to use recursive functions to
    implement recursive algorithms
  • Learn about recursion and backtracking

3
Recursive Definitions
  • Recursion
  • Process of solving a problem by reducing it to
    smaller versions of itself
  • Recursive definition
  • Definition in which a problem is expressed in
    terms of a smaller version of itself
  • Has one or more base cases

4
Recursive Definitions
  • Recursive algorithm
  • Algorithm that finds the solution to a given
    problem by reducing the problem to smaller
    versions of itself
  • Has one or more base cases
  • Implemented using recursive functions
  • Recursive function
  • function that calls itself
  • Base case
  • Case in recursive definition in which the
    solution is obtained directly
  • Stops the recursion

5
Recursive Definitions
  • General solution
  • Breaks problem into smaller versions of itself
  • General case
  • Case in recursive definition in which a smaller
    version of itself is called
  • Must eventually be reduced to a base case

6
Tracing a Recursive Function
  • Recursive function
  • Has unlimited copies of itself
  • Every recursive call has
  • its own code
  • own set of parameters
  • own set of local variables

7
Tracing a Recursive Function
  • After completing recursive call
  • Control goes back to calling environment
  • Recursive call must execute completely before
    control goes back to previous call
  • Execution in previous call begins from point
    immediately following recursive call

8
Recursive Definitions
  • Directly recursive a function that calls itself
  • Indirectly recursive a function that calls
    another function and eventually results in the
    original function call
  • Tail recursive function recursive function in
    which the last statement executed is the
    recursive call
  • Infinite recursion the case where every
    recursive call results in another recursive call

9
Designing Recursive Functions
  • Understand problem requirements
  • Determine limiting conditions
  • Identify base cases

10
Designing Recursive Functions
  • Provide direct solution to each base case
  • Identify general case(s)
  • Provide solutions to general cases in terms of
    smaller versions of itself

11
Recursive Factorial Function
  • int fact(int num)
  • if(num 0)
  • return 1
  • else
  • return num fact(num 1)

12
Recursive Factorial Trace
13
Recursive Implementation Largest Value in Array
  • int largest(const int list, int lowerIndex, int
    upperIndex)
  • int max
  • if(lowerIndex upperIndex) //the size of
    the sublist is 1
  • return listlowerIndex
  • else
  • max largest(list, lowerIndex 1,
    upperIndex)
  • if(listlowerIndex gt max)
  • return listlowerIndex
  • else
  • return max

14
Execution of largest(list, 0, 3)
15
Recursive Fibonacci
  • int rFibNum(int a, int b, int n)
  • if(n 1)
  • return a
  • else if(n 2)
  • return b
  • else
  • return rFibNum(a, b, n - 1) rFibNum(a,
    b, n - 2)

16
Execution of rFibonacci(2,3,5)
17
Towers of Hanoi Problem with Three Disks
18
Towers of Hanoi Three Disk Solution
19
Towers of Hanoi Three Disk Solution
20
Towers of Hanoi Recursive Algorithm
  • void moveDisks(int count, int needle1, int
    needle3, int needle2)
  • if(count gt 0)
  • moveDisks(count - 1, needle1, needle2,
    needle3)
  • coutltlt"Move disk "ltltcountltlt from
    "ltltneedle1
  • ltlt to "ltltneedle3ltlt"."ltltendl
  • moveDisks(count - 1, needle2, needle3,
    needle1)

21
Decimal to Binary Recursive Algorithm
  • void decToBin(int num, int base)
  • if(num gt 0)
  • decToBin(num/base, base)
  • coutltltnum base

22
Execution of decToBin(13,2)
23
Recursion or Iteration?
  • Two ways to solve particular problem
  • Iteration
  • Recursion
  • Iterative control structures uses looping to
    repeat a set of statements
  • Tradeoffs between two options
  • Sometimes recursive solution is easier
  • Recursive solution is often slower

24
Backtracking Algorithm
  • Attempts to find solutions to a problem by
    constructing partial solutions
  • Makes sure that any partial solution does not
    violate the problem requirements
  • Tries to extend partial solution towards
    completion

25
Backtracking Algorithm
  • If it is determined that partial solution would
    not lead to solution
  • partial solution would end in dead end
  • algorithm backs up by removing the most recently
    added part and then tries other possibilities

26
Solution to 8-Queens Puzzle
27
4-Queens Puzzle
28
4-Queens Tree
29
8 X 8 Square Board
30
Chapter Summary
  • Recursive definitions
  • Recursive algorithms
  • Recursive functions
  • Base cases
  • General cases

31
Chapter Summary
  • Tracing recursive functions
  • Designing recursive functions
  • Varieties of recursive functions
  • Recursion vs. Iteration
  • Backtracking
  • N-Queens puzzle
Write a Comment
User Comments (0)
About PowerShow.com