03-Recursion(1) (2).ppt - King Fahd University of Petroleum Minerals College of Computer Science Engineering Information Computer Science Department

03-Recursion(1) (2).ppt - King Fahd University of Petroleum...

This preview shows page 1 - 9 out of 39 pages.

Unit 3 Recursion King Fahd University of Petroleum & Minerals College of Computer Science & Engineering Information & Computer Science Department
Image of page 1
Reading Assignment “Data Structures and Algorithms in Java”, 3 rd Edition, Adam Drozdek, Cengage Learning, ISBN 978-9814239233 Chapter 5 Sections 1-8, 10. Backtracking and the Case Study in Sections 9 and 11 are optional reading.
Image of page 2
Objectives Discuss the following topics: Recursive Definitions Method Calls and Recursion Implementation Tracing of Recursive Methods Tail and Non-Tail Recursive Methods Direct and Indirect Recursive Methods Nested and non-Nested Recursive Methods Excessive Recursion Final Remarks on Recursion 3
Image of page 3
Recursive Definitions Recursive definitions are programming concepts that define themselves A recursive definition consists of two parts: The anchor or ground case , the basic elements that are the building blocks of all other elements of the set Rules that allow for the construction of new objects out of basic elements or objects that have already been constructed 4
Image of page 4
Recursive Definitions (continued) Recursive definitions serve two purposes: Generating new elements Testing whether an element belongs to a set Recursive definitions are frequently used to define functions and sequences of numbers 5
Image of page 5
What is a Recursive Method? A method is recursive if it calls itself either directly or indirectly. Recursion is a technique that allows us to break down a problem into one or more simpler sub-problems that are similar in form to the original problem. Example 1: A recursive method for computing x! This method illustrates all the important ideas of recursion: A base (or stopping) case Code first tests for stopping condition ( is x = = 0 ?) Provides a direct (non-recursive) solution for the base case (0! = 1). The recursive case Expresses solution to problem in 1, 2 or more smaller parts Invokes itself to compute the smaller parts, eventually reaching the base case long factorial (int x) { if (x == 0) return 1; //base case else return x * factorial (x – 1); //recursive case } 6
Image of page 6
What is a Recursive Method? Example 2: count zeros in an array int countZeros(int[] x, int index) { if (index == 0) return x[0] == 0 ? 1: 0; else if (x[index] == 0) return 1 + countZeros(x, index – 1); else return countZeros(x, index – 1); } 7
Image of page 7
Method Calls and Recursion Implementation When a method is called an Activation Record is created. It contains: The values of the parameters. The values of the local variables. The return address (The address of the statement after the call statement). The previous activation record address. A location for the return value of the activation record. When a method returns: The return value of its activation record is passed to the previous activation record or it is passed to the calling statement if there is no previous activation record.
Image of page 8
Image of page 9

You've reached the end of your free preview.

Want to read all 39 pages?

  • Winter '12
  • Ghouti

  • Left Quote Icon

    Student Picture

  • Left Quote Icon

    Student Picture

  • Left Quote Icon

    Student Picture

Stuck? We have tutors online 24/7 who can help you get unstuck.
A+ icon
Ask Expert Tutors You can ask You can ask You can ask (will expire )
Answers in as fast as 15 minutes