Recursion Chapter 16 S. Dandamudi
Outline <ul><li>Introduction </li></ul><ul><li>Recursion </li></ul><ul><li>Recursion vs. Iteration </li></ul>
Introduction <ul><li>A recursive procedure calls itself </li></ul><ul><ul><li>Directly, or </li></ul></ul><ul><ul><li>Indi...
Introduction (cont’d)
Recursion <ul><li>Two examples in Pentium and MIPS assembly languages </li></ul><ul><ul><li>Factorial  </li></ul></ul><ul>...
Recursion (cont’d) <ul><li>Example 2 </li></ul><ul><li>Quicksort  </li></ul><ul><ul><li>Sort an N-element array </li></ul>...
Recursion vs. Iteration <ul><li>Recursion </li></ul><ul><ul><li>Concise </li></ul></ul><ul><ul><li>Better program maintena...
Upcoming SlideShare
Loading in …5
×

Al2ed chapter16

351 views

Published on

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
351
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
8
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Al2ed chapter16

  1. 1. Recursion Chapter 16 S. Dandamudi
  2. 2. Outline <ul><li>Introduction </li></ul><ul><li>Recursion </li></ul><ul><li>Recursion vs. Iteration </li></ul>
  3. 3. Introduction <ul><li>A recursive procedure calls itself </li></ul><ul><ul><li>Directly, or </li></ul></ul><ul><ul><li>Indirectly </li></ul></ul><ul><li>Some applications can be naturally expressed using recursion </li></ul><ul><ul><ul><li>factorial(0) = 1 </li></ul></ul></ul><ul><ul><ul><li>factorial (n) = n * factorial(n  1) for n > 0 </li></ul></ul></ul><ul><li>From implementation viewpoint </li></ul><ul><ul><li>Very similar to any other procedure call </li></ul></ul><ul><ul><ul><li>Activation records are stored on the stack </li></ul></ul></ul>
  4. 4. Introduction (cont’d)
  5. 5. Recursion <ul><li>Two examples in Pentium and MIPS assembly languages </li></ul><ul><ul><li>Factorial </li></ul></ul><ul><ul><li>Quicksort </li></ul></ul><ul><li>Example 1 </li></ul><ul><ul><li>Factorial </li></ul></ul><ul><ul><ul><li>factorial(0) = 1 </li></ul></ul></ul><ul><ul><ul><li>factorial (n) = n * factorial(n  1) for n > 0 </li></ul></ul></ul><ul><li>Activation record </li></ul><ul><ul><li>Consists of the return address pushed onto the stack by the call instruction </li></ul></ul>
  6. 6. Recursion (cont’d) <ul><li>Example 2 </li></ul><ul><li>Quicksort </li></ul><ul><ul><li>Sort an N-element array </li></ul></ul><ul><ul><li>Basic algorithm </li></ul></ul><ul><ul><ul><li>Selects a partition element x </li></ul></ul></ul><ul><ul><ul><li>Assume that the final position of x is array[ i ] </li></ul></ul></ul><ul><ul><ul><li>Moves elements less than x into array[0]…array[ i  1] </li></ul></ul></ul><ul><ul><ul><li>Moves elements greater than x into array[ i +1]…array[ N  1] </li></ul></ul></ul><ul><ul><ul><li>Applies quicksort recursively to sort these two subarrays </li></ul></ul></ul>
  7. 7. Recursion vs. Iteration <ul><li>Recursion </li></ul><ul><ul><li>Concise </li></ul></ul><ul><ul><li>Better program maintenance </li></ul></ul><ul><ul><li>Natural choice for some problems </li></ul></ul><ul><li>Potential problems </li></ul><ul><ul><li>Inefficiency </li></ul></ul><ul><ul><ul><li>Call invocation and return overheads </li></ul></ul></ul><ul><ul><ul><li>Duplicate computation </li></ul></ul></ul><ul><ul><li>Increased memory requirements </li></ul></ul>Last slide

×