Recursion. Example R1

Size: px
Start display at page:

Download "Recursion. Example R1"

Transcription

1 Recursion Certain computer problems are solved by repeating the execution of one or more statements a certain number of times. So far, we have implemented the repetition of one or more statements by using iterations or loops: while loop, for loop, or do-while loop. Recursion, the process by which a function calls itself, is another way to implement the repetition of the execution of one or more statements. A function that calls itself is said to be defined recursively. You define a function recursively by providing the following two parts in its definition: 1. An anchor or base case or stopping case: in this part of the definition of the function, you specify the value of the function (output/returned) for one or more values of the arguments. 2. An inductive or recursive case: in this part of the definition of the function, you specify how the value of the function (output/returned) for the current value of the argument(s) can be obtained from the value(s) of the function for the previous value(s) of the arguments. Example R1 A function that receives as argument a positive integer value and outputs its digits in reverse order does the following: if the argument is 1234, the output will be: ; and if the argument is 3 the output will be 3. This function is written using a while loop as follows: void iwritereverse( unsigned num ) while( num!= 0 ) // condition: num cout << num % 10; num = num / 10; 2011 Gilbert Ndjatou Page 269

2 It is written using recursion as follows: void rwritereverse( unsigned num ) if ( num < 10 ) cout << num; else cout << num % 10; rwritereverse( num / 10); // stopping case // inductive/recursive case Example R2 A function that receives as argument a positive integer value and outputs its digits one per line does the following: if the argument is 1234, the output will be: if the argument is 3 the output will be: 3 The definition of this function using a while loop requires the use of two loops of the use of an array or a stack to hold the digits of a number. It is written using recursion as follows: void rwritedigits( unsigned num ) if ( num < 10 ) cout << num; else rwritedigits( num / 10); cout << num % 10 << endl; // stopping case // inductive/recursive case 2011 Gilbert Ndjatou Page 270

3 Example R3 Recursive definition of the function to compute the n th power of a double precision value: double rpower( double num, unsigned expo) if ( expo == 0 ) return( 1.0 ); else return( num * rpower( num, expo 1 ) ); // stopping case // inductive/recursive case Example R4 Recursive definition of the function to compute the n! (n factorial) for a positive integer value n: Note: 0! = 1 and n! = n * (n-1) * (n-2) * (n-3) *... 3 * 2 * 1 for n > 0 unsigned factorial( unsigned num) if ( num < 2 ) return( 1 ); else return( num * factorial( num 1 ) ); // stopping case // inductive/recursive case Example R5 Recursive definition of the function to compute the n th (n> 2 ) Fibonacci number. Fibonacci Numbers: 1, 1, 2, 3, 5, 8, 13, Note: Fibonacci( 1 ) = 1, Fibonacci(2 ) = 1, Fibonacci( n ) = Fibonacci(n-1) + Fibonacci(n-2) for n>2 unsigned fibonacci( unsigned num) if ( num < = 2 ) // stopping case return( 1 ); else return( Fibonacci(num 1) + fibonacci( num 2 ) ); // inductive/recursive case 2011 Gilbert Ndjatou Page 271

4 Exercise R1 1. Write a recursive definition of the function void writeasterisks( int num ) that receives as argument a positive integer value and outputs that number of asterisks * to the screen all on one line. 2. Write the recursive definition of the function void writersequence( int num ) that receives as argument a positive integer value n and outputs the sequence: n n-1 n Write the recursive definition of the function void writesequence( int num ) that receives as argument a positive integer value n and outputs the sequence: n. 4. Write a recursive definition of the function int countdigits( unsigned num ) that receives a positive integer value and returns its number of digits. Tracing the Execution of a Recursive Function Call We use the run-time stack to trace the execution of a recursive call as follows: For each function call, the following actions take place: A memory location is created in the run-time stack for each local variable and value parameter of the function. The address of the reentry point (the instruction to be executed after the function terminates) is also pushed on top of the stack. Note that in the examples that follow, we use the instruction itself instead of its address. After the execution of a function, the value returned by that function becomes available to the function that calls this function and the pop operation is performed on the stack. The execution of the function call terminates when the stack becomes empty. Example R6 The execution trace of the function call rwritereverse(123); in function main follows: Function Calls Value Parameters & Local Variables Returned Value Reentry point rwritereverse(1) num= 1 End of function rwritereverse(12) num= 12 End of function rwritereverse(123) num= 123 In function main Output Gilbert Ndjatou Page 272

5 Example R7 The execution trace of the function call rwritedigits(123); in function main follows: Function Calls Value Parameters & Local Variables Returned Value Reentry point rwritedigits(1) num= 1 cout << num % 10; rwritedigits(12) num= 12 cout << num % 10; rwritedigits(123) num= 123 In function main Output Example R8 The execution trace of the following two statements: in function main follows: result = rpower( 3.0, 4); cout << endl << Result=\t << result; Function Calls rpower( 3.0, 0) rpower( 3.0, 1) rpower( 3.0, 2) rpower( 3.0, 3) rpower( 3.0, 4) Value Parameters & Local Variables num= 3.0 expo= 0 num= 3.0 expo= 1 num= 3.0 expo= 2 num= 3.0 expo= 3 num= 3.0 expo= 4 Returned Value Reentry point 1.0 return( num * rpower( num, expo 1 ) ) 3.0 return( num * rpower( num, expo 1 ) ) 9.0 return( num * rpower( num, expo 1 ) ) 27.0 return( num * rpower( num, expo 1 ) ) 81.0 result = rpower( 3.0, 4 ) Output Result = 81.0 Exercise R2 1. Show the trace of the execution of the function call writersequence( 5 ); 2. Show the trace of the execution of the function call writesequence( 5 ); 3. Show the trace of the execution of the function call cout << countdigits( 12345); 2011 Gilbert Ndjatou Page 273

6 Exercise R3 1. Determine what is being computed by each of the following recursive functions: unsigned f1( unsigned num) if( num < 2 ) return 0; return ( 1 + f1( num / 2) ); unsigned f2( unsigned num) if( num == 0 ) return 0; return ( f2( num / 10) + num % 10 ); unsigned f3( unsigned num) if( num < 10 ) return num; return ( f3( num / 10) ); 2. Show the trace of the execution of the following function calls: a. cout << f1( 10 ); b. cout << f2( 1234); c. cout << f3( 3456 ); 3. Write a recursive definition of the function void reversearray( char list[ ], int first, int last ) that receives as arguments an array of characters, the index of the first element and the index of the last element in the array, and reverses the elements of the array. 4. Write a recursive definition of the function bool ispalindrome( char list[ ], int first, int last ) that receives as arguments an array of characters, the index of the first element and the index of the last element in the array, and returns true if the array is a palindrome, and false otherwise Gilbert Ndjatou Page 274

7 Algorithm Analysis An algorithm analysis is in general measured according to two criteria: The space utilization and the time efficiency. The space utilization refers to the amount of memory required to store the data used in the algorithm. The time efficiency refers to the amount of time required to process the data used in the algorithm. It is in general difficult to minimize both the space utilization and the time requirement of an algorithm simultaneously: A tradeoff between space utilization and time efficiency is therefore needed. This tradeoff should take into consideration the cost of the memory and the storage devices, and the importance of time in the execution of the algorithm. In addition to the size of the input, other factors that influence the execution time of an algorithm are: The quality of the source code that implements the algorithm. The quality of the machine code generated from this source code by the compiler. The kinds of instructions used in the algorithm. The speed with which the machine can execute the instructions used in the algorithm However, these factors are not considered in the analysis of the execution time of an algorithm for the following reasons: Some languages are better suited that others for certain algorithms. Some programmers write faster programs than others. Some compilers generate more efficient code that others. The kinds of instructions used in an algorithm and the speed with which the machine can execute them depend on the particular computer system being used, the processors speed, the amount and kind of memory and disk space, the number of users logged in and many other factors. So, the execution time of an algorithm is in general specified as a function T(n) of the size n of the input. T(n) is specified as an approximate count of the statements executed in the algorithm instead of real time units such as seconds Gilbert Ndjatou Page 275

8 Example AA1 /* Algorithm to find the mean of x[0], x[1],... x[n 1] */ /* Variables: sum to hold the sum of the elements of the array ct the index variable for the array */ 1. Initialize sum to Initialize the index variable ct to While ct < n do the following: a. Add x[ct] to sum. b. Increment ct by Calculate and return the mean: sum / n. Algorithm Analysis Statement # of Times Executed n+1 3.a n 3.b n 4 1 Total = TM(n) 3n + 4 Best, Average and Worst Cases In the example above, the computing time depends only on the size n of the input. However, in other problems, the computing time may also depend on the arrangement of the input items. For example, it will take less time to sort a list of items that is almost in order than to sort the same list of items which is in reverse order. With these type of problems, we can compute T(n) as follows: o T(n) for the best case - not very informative o T(n) for the average case - difficult to compute o T(n) for the worst case - is in general taken as a measure of the algorithm performance Example AA2 Selection Sort Algorithm /*- Algorithm to sort x[0], x[1],... x[n 1] in ascending order using the selection sort algorithm -*/ /* Variables: smallest to hold the smallest element in the part of the array being searched smallestpos to hold the position of the smallest element found pass to hold the number of passes made through the list ct the index variable for the array */ 2011 Gilbert Ndjatou Page 276

9 1. Initialize pass to While pass < n 2 do the following: a. Set smallestpos to pass. b. Set smallest to x[pass]. c. Set ct to pass + 1 d. While ct < n 1 do the following: i. If x[ct] < smallest then do the following: 1. Set smallest to x[ct]. 2. Set smallestpos to ct. ii. Increment ct by 1; e. Set x[smallpos] to x[pass]. f. Set x[pass] to smallest. g. Increment pass by 1. Algorithm Analysis Statement # of Times Executed n-1 2a n-2 2.b n-2 2.c n-2 2.d n-1 + n d.i n-2 + n d.i.1 n-2 + n d.i.2 n-2 + n d.ii n-2 + n e n-2 2.f n-2 2.g n (n-1) +6(n-2) + (n-1)n/2 + (n-2)(n-1)/2 Total = TSS(n) = 1 + (n-1) + 6(n-2) + (n-1)(n-1) = n(n-1) + 6n = n 2 + 5n - 11 Example AA3 Binary Search Algorithm /*- Algorithm to binary search x[0], x[1],... x[n 1] for item, where the elements are sorted in ascending order -*/ /* Variables: item to hold the item being searched in the array firstpos to hold the position of the first element of the list to be searched lastpos to hold the position of the last element of the list to be searched midpos to hold the position of the middle element of the list to be searched found a flag to indicate whether the item is found loc to hold the index of an element in the array */ 2011 Gilbert Ndjatou Page 277

10 1. Read the item to be found into variable item. 2. Set found to false. 3. Set firstpos to Set lastpos to n While firstpos < lastpos and not found do the following: a. Calculate midpos = ( firstpos + lastpos ) /2. b. If x[midpos] == item then do the following: i. Set found to true. c. Else if x[midpos] < item then do the following: i. Set firstpos to midpos + 1 d. Else do the following: i. Set lastpos to midpos 1. Algorithm Analysis Statement # of Times Executed If the number of repetitions of the loop is k, then n / 2 k = 1 because at each 5 iteration, the size of the list is divided by 2 and the loop stops when the size of the list is 1. Therefore k = log2(n ). 5.a k b k -1 5.c k -1 5.d 5.c.i k -1 5.d.i Total = 5log2(n ) TBS(n) Order of Magnitude f(n): O(f(n)) Given the functions of variable n f(n) and g(n), we said that g(n) has order of magnitude f(n), denoted by: Example g(n) = O(f(n)) if there exists the constant C and a value of n, n0 such that g(n) <= Cf(n) for every n > n0 1. 3n + 5 is O(n) 2. 5n2-4n 500 is O(n 2 ) 2011 Gilbert Ndjatou Page 278

11 The time efficiency of an algorithm is in general specified as an order of magnitude of a well-known simple function such as: O(1) constant computing time better O(log2(n )) O(n) O(nlog2(n )) O(n 2 ) O(n 3 ) Example logarithmic computing time linear computing time quadratic computing time cubic computing time O(2 n ) exponential computing time worst 1. TM(n) = 3n + 4 = O(n) linear algorithm 2. TSS(n) = n 2 + 5n 11 = O(n 2 ) quadratic algorithm 3. TBS(n) = 4log2(n ) = O(log2(n )) logarithmic algorithm Exercise AA1 1. What are the two criteria that are in general used to measure the efficiency of an algorithm? 2. The worst case computing time of the selection sort algorithm is O( )? 3. The worst case computing time of binary search is O( )? 4. Provide the order of magnitude that is the best O notation to describe each of the following computing times: a. T(n) = n + 7 b. T(n) = 5n 2 + n + 50 c. T(n) = n 3 + n + log2(n) d. T(n) = 2 n + n Provide the order of magnitude of each of the following algorithms: a. n = 0; sum = 0; cin >> num; while( num!= -99) sum += num; n++; cin >> num; cout << sum / n; 2011 Gilbert Ndjatou Page 279

12 b. /* matrix addition */ for( int i = 0; i < n ; i++ ) for(int j = 0 ; j < n; j++ ) list3[i][j] = list1[i][j] + list2[i][j]; c. /* matrix multiplication */ for( int i = 0; i < n ; i++ ) for(int j = 0 ; j < n; j++ ) c[i][j] = 0; for(int k = 0; k < n; k++) c[i][j] += a[i][k] + b[k][j]; d. while( n >= 1 ) n /= 2; e. x = 1; for( int i = 0; i < = n -1 ; i++ ) for(int j = 0 ; j <= x ; j++ ) cout << j << endl; x *= 2; Recursive Function to Solve the Towers of Hanoi Problem void move( unsigned numberofdisk, char source, char destination, char spare ) if( numberofdisk == 1 ) cout << endl << Move the top of the disk from\t << source << \tto\t << destination; else move( numberofdisk 1, source, spare, destination ); move( 1, source, destination, spare ); move( numberofdisk 1, spare, destination, source ); Example of execution of the program: move( 5, A, B, C ); 2011 Gilbert Ndjatou Page 280

Algorithm Complexity Analysis: Big-O Notation (Chapter 10.4) Dr. Yingwu Zhu

Algorithm Complexity Analysis: Big-O Notation (Chapter 10.4) Dr. Yingwu Zhu Algorithm Complexity Analysis: Big-O Notation (Chapter 10.4) Dr. Yingwu Zhu Measure Algorithm Efficiency Space utilization: amount of memory required Time efficiency: amount of time required to accomplish

More information

Data Structures Lecture 3 Order Notation and Recursion

Data Structures Lecture 3 Order Notation and Recursion Data Structures Lecture 3 Order Notation and Recursion 1 Overview The median grade.cpp program from Lecture 2 and background on constructing and using vectors. Algorithm analysis; order notation Recursion

More information

Algorithm Analysis. CENG 707 Data Structures and Algorithms

Algorithm Analysis. CENG 707 Data Structures and Algorithms Algorithm Analysis CENG 707 Data Structures and Algorithms 1 Algorithm An algorithm is a set of instructions to be followed to solve a problem. There can be more than one solution (more than one algorithm)

More information

Data Structures And Algorithms

Data Structures And Algorithms Data Structures And Algorithms Recursion Eng. Anis Nazer First Semester 2016-2017 Recursion Recursion: to define something in terms of itself Example: factorial n!={ 1 n=0 n (n 1)! n>0 Recursion Example:

More information

CSCI-1200 Data Structures Spring 2018 Lecture 7 Order Notation & Basic Recursion

CSCI-1200 Data Structures Spring 2018 Lecture 7 Order Notation & Basic Recursion CSCI-1200 Data Structures Spring 2018 Lecture 7 Order Notation & Basic Recursion Review from Lectures 5 & 6 Arrays and pointers, Pointer arithmetic and dereferencing, Types of memory ( automatic, static,

More information

Analysis of Algorithm. Chapter 2

Analysis of Algorithm. Chapter 2 Analysis of Algorithm Chapter 2 Outline Efficiency of algorithm Apriori of analysis Asymptotic notation The complexity of algorithm using Big-O notation Polynomial vs Exponential algorithm Average, best

More information

Algorithm Analysis. College of Computing & Information Technology King Abdulaziz University. CPCS-204 Data Structures I

Algorithm Analysis. College of Computing & Information Technology King Abdulaziz University. CPCS-204 Data Structures I Algorithm Analysis College of Computing & Information Technology King Abdulaziz University CPCS-204 Data Structures I Order Analysis Judging the Efficiency/Speed of an Algorithm Thus far, we ve looked

More information

Measuring algorithm efficiency

Measuring algorithm efficiency CMPT 225 Measuring algorithm efficiency Timing Counting Cost functions Cases Best case Average case Worst case Searching Sorting O Notation O notation's mathematical basis O notation classes and notations

More information

Algorithm Efficiency & Sorting. Algorithm efficiency Big-O notation Searching algorithms Sorting algorithms

Algorithm Efficiency & Sorting. Algorithm efficiency Big-O notation Searching algorithms Sorting algorithms Algorithm Efficiency & Sorting Algorithm efficiency Big-O notation Searching algorithms Sorting algorithms Overview Writing programs to solve problem consists of a large number of decisions how to represent

More information

Recursion. COMS W1007 Introduction to Computer Science. Christopher Conway 26 June 2003

Recursion. COMS W1007 Introduction to Computer Science. Christopher Conway 26 June 2003 Recursion COMS W1007 Introduction to Computer Science Christopher Conway 26 June 2003 The Fibonacci Sequence The Fibonacci numbers are: 1, 1, 2, 3, 5, 8, 13, 21, 34,... We can calculate the nth Fibonacci

More information

CSCI 104 Runtime Complexity. Mark Redekopp David Kempe

CSCI 104 Runtime Complexity. Mark Redekopp David Kempe 1 CSCI 104 Runtime Complexity Mark Redekopp David Kempe 2 Runtime It is hard to compare the run time of an algorithm on actual hardware Time may vary based on speed of the HW, etc. The same program may

More information

Analysis of Algorithms. CSE Data Structures April 10, 2002

Analysis of Algorithms. CSE Data Structures April 10, 2002 Analysis of Algorithms CSE 373 - Data Structures April 10, 2002 Readings and References Reading Chapter 2, Data Structures and Algorithm Analysis in C, Weiss Other References 10-Apr-02 CSE 373 - Data Structures

More information

Algorithm Efficiency & Sorting. Algorithm efficiency Big-O notation Searching algorithms Sorting algorithms

Algorithm Efficiency & Sorting. Algorithm efficiency Big-O notation Searching algorithms Sorting algorithms Algorithm Efficiency & Sorting Algorithm efficiency Big-O notation Searching algorithms Sorting algorithms Overview Writing programs to solve problem consists of a large number of decisions how to represent

More information

Two Approaches to Algorithms An Example (1) Iteration (2) Recursion

Two Approaches to Algorithms An Example (1) Iteration (2) Recursion 2. Recursion Algorithm Two Approaches to Algorithms (1) Iteration It exploits while-loop, for-loop, repeat-until etc. Classical, conventional, and general approach (2) Recursion Self-function call It exploits

More information

UNIT 1 ANALYSIS OF ALGORITHMS

UNIT 1 ANALYSIS OF ALGORITHMS UNIT 1 ANALYSIS OF ALGORITHMS Analysis of Algorithms Structure Page Nos. 1.0 Introduction 7 1.1 Objectives 7 1.2 Mathematical Background 8 1.3 Process of Analysis 12 1.4 Calculation of Storage Complexity

More information

Recursion: Factorial (1) Recursion. Recursion: Principle. Recursion: Factorial (2) Recall the formal definition of calculating the n factorial:

Recursion: Factorial (1) Recursion. Recursion: Principle. Recursion: Factorial (2) Recall the formal definition of calculating the n factorial: Recursion EECS2030: Advanced Object Oriented Programming Fall 2017 CHEN-WEI WANG Recursion: Factorial (1) Recall the formal definition of calculating the n factorial: 1 if n = 0 n! = n (n 1) (n 2) 3 2

More information

Divide & Conquer. 2. Conquer the sub-problems by solving them recursively. 1. Divide the problem into number of sub-problems

Divide & Conquer. 2. Conquer the sub-problems by solving them recursively. 1. Divide the problem into number of sub-problems Divide & Conquer Divide & Conquer The Divide & Conquer approach breaks down the problem into multiple smaller sub-problems, solves the sub-problems recursively, then combines the solutions of the sub-problems

More information

What is Recursion? ! Each problem is a smaller instance of itself. ! Implemented via functions. ! Very powerful solving technique.

What is Recursion? ! Each problem is a smaller instance of itself. ! Implemented via functions. ! Very powerful solving technique. Recursion 1 What is Recursion? Solution given in terms of problem. Huh? Each problem is a smaller instance of itself. Implemented via functions. Very powerful solving technique. Base Case and Recursive

More information

Recitation 9. Prelim Review

Recitation 9. Prelim Review Recitation 9 Prelim Review 1 Heaps 2 Review: Binary heap min heap 1 2 99 4 3 PriorityQueue Maintains max or min of collection (no duplicates) Follows heap order invariant at every level Always balanced!

More information

CSE 146. Asymptotic Analysis Interview Question of the Day Homework 1 & Project 1 Work Session

CSE 146. Asymptotic Analysis Interview Question of the Day Homework 1 & Project 1 Work Session CSE 146 Asymptotic Analysis Interview Question of the Day Homework 1 & Project 1 Work Session Comparing Algorithms Rough Estimate Ignores Details Or really: independent of details What are some details

More information

CS 261 Data Structures. Big-Oh Analysis: A Review

CS 261 Data Structures. Big-Oh Analysis: A Review CS 261 Data Structures Big-Oh Analysis: A Review Big-Oh: Purpose How can we characterize the runtime or space usage of an algorithm? We want a method that: doesn t depend upon hardware used (e.g., PC,

More information

Recursive Methods and Problem Solving. Chris Kiekintveld CS 2401 (Fall 2010) Elementary Data Structures and Algorithms

Recursive Methods and Problem Solving. Chris Kiekintveld CS 2401 (Fall 2010) Elementary Data Structures and Algorithms Recursive Methods and Problem Solving Chris Kiekintveld CS 2401 (Fall 2010) Elementary Data Structures and Algorithms Review: Calling Methods int x(int n) { int m = 0; n = n + m + 1; return n; int y(int

More information

CSCI 2170 Algorithm Analysis

CSCI 2170 Algorithm Analysis CSCI 2170 Algorithm Analysis Given two solutions (algorithms) for a given problem, which one is better? In computer science, we measure the quality of algorithms in terms of its memory and time efficiency.

More information

Recursion Chapter 3.5

Recursion Chapter 3.5 Recursion Chapter 3.5-1 - Outline Induction Linear recursion Example 1: Factorials Example 2: Powers Example 3: Reversing an array Binary recursion Example 1: The Fibonacci sequence Example 2: The Tower

More information

ECE G205 Fundamentals of Computer Engineering Fall Exercises in Preparation to the Midterm

ECE G205 Fundamentals of Computer Engineering Fall Exercises in Preparation to the Midterm ECE G205 Fundamentals of Computer Engineering Fall 2003 Exercises in Preparation to the Midterm The following problems can be solved by either providing the pseudo-codes of the required algorithms or the

More information

l Determine if a number is odd or even l Determine if a number/character is in a range - 1 to 10 (inclusive) - between a and z (inclusive)

l Determine if a number is odd or even l Determine if a number/character is in a range - 1 to 10 (inclusive) - between a and z (inclusive) Final Exam Exercises Chapters 1-7 + 11 Write C++ code to: l Determine if a number is odd or even CS 2308 Fall 2016 Jill Seaman l Determine if a number/character is in a range - 1 to 10 (inclusive) - between

More information

Recursion. EECS2030: Advanced Object Oriented Programming Fall 2017 CHEN-WEI WANG

Recursion. EECS2030: Advanced Object Oriented Programming Fall 2017 CHEN-WEI WANG Recursion EECS2030: Advanced Object Oriented Programming Fall 2017 CHEN-WEI WANG Recursion: Principle Recursion is useful in expressing solutions to problems that can be recursively defined: Base Cases:

More information

Recursion. Chapter 17 CMPE13. Cyrus Bazeghi

Recursion. Chapter 17 CMPE13. Cyrus Bazeghi Recursion Chapter 17 CMPE13 Cyrus Bazeghi What is Recursion? A recursive function is one that solves its task by calling itself on smaller pieces of data. Similar to recurrence function in mathematics.

More information

Recursion. Tracing Method Calls via a Stack. Beyond this lecture...

Recursion. Tracing Method Calls via a Stack. Beyond this lecture... Recursion EECS2030 B: Advanced Object Oriented Programming Fall 2018 CHEN-WEI WANG Recursion: Principle Recursion is useful in expressing solutions to problems that can be recursively defined: Base Cases:

More information

8/5/10 TODAY'S OUTLINE. Recursion COMP 10 EXPLORING COMPUTER SCIENCE. Revisit search and sorting using recursion. Recursion WHAT DOES THIS CODE DO?

8/5/10 TODAY'S OUTLINE. Recursion COMP 10 EXPLORING COMPUTER SCIENCE. Revisit search and sorting using recursion. Recursion WHAT DOES THIS CODE DO? 8/5/10 TODAY'S OUTLINE Recursion COMP 10 EXPLORING COMPUTER SCIENCE Revisit search and sorting using recursion Binary search Merge sort Lecture 8 Recursion WHAT DOES THIS CODE DO? A function is recursive

More information

[ 11.2, 11.3, 11.4] Analysis of Algorithms. Complexity of Algorithms. 400 lecture note # Overview

[ 11.2, 11.3, 11.4] Analysis of Algorithms. Complexity of Algorithms. 400 lecture note # Overview 400 lecture note #0 [.2,.3,.4] Analysis of Algorithms Complexity of Algorithms 0. Overview The complexity of an algorithm refers to the amount of time and/or space it requires to execute. The analysis

More information

Test Bank Ver. 5.0: Data Abstraction and Problem Solving with C++: Walls and Mirrors, 5 th edition, Frank M. Carrano

Test Bank Ver. 5.0: Data Abstraction and Problem Solving with C++: Walls and Mirrors, 5 th edition, Frank M. Carrano Chapter 2 Recursion: The Mirrors Multiple Choice Questions 1. In a recursive solution, the terminates the recursive processing. a) local environment b) pivot item c) base case d) recurrence relation 2.

More information

! Determine if a number is odd or even. ! Determine if a number/character is in a range. - 1 to 10 (inclusive) - between a and z (inclusive)

! Determine if a number is odd or even. ! Determine if a number/character is in a range. - 1 to 10 (inclusive) - between a and z (inclusive) Final Exam Exercises CS 2308 Spring 2014 Jill Seaman Chapters 1-7 + 11 Write C++ code to: Determine if a number is odd or even Determine if a number/character is in a range - 1 to 10 (inclusive) - between

More information

Recursion Chapter 8. What is recursion? How can a function call itself? How can a function call itself?

Recursion Chapter 8. What is recursion? How can a function call itself? How can a function call itself? Recursion Chapter 8 CS 3358 Summer I 2012 Jill Seaman What is recursion? Generally, when something contains a reference to itself Math: defining a function in terms of itself Computer science: when a function

More information

Algorithm Analysis. Performance Factors

Algorithm Analysis. Performance Factors Algorithm Analysis How can we demonstrate that one algorithm is superior to another without being misled by any of the following problems: Special cases Every algorithm has certain inputs that allow it

More information

Recursion. Recursion is: Recursion splits a problem:

Recursion. Recursion is: Recursion splits a problem: Recursion Recursion Recursion is: A problem solving approach, that can... Generate simple solutions to... Certain kinds of problems that... Would be difficult to solve in other ways Recursion splits a

More information

Recursion. Chapter 7. Copyright 2012 by Pearson Education, Inc. All rights reserved

Recursion. Chapter 7. Copyright 2012 by Pearson Education, Inc. All rights reserved Recursion Chapter 7 Contents What Is Recursion? Tracing a Recursive Method Recursive Methods That Return a Value Recursively Processing an Array Recursively Processing a Linked Chain The Time Efficiency

More information

CS103L SPRING 2017 UNIT 8: RECURSION

CS103L SPRING 2017 UNIT 8: RECURSION CS103L SPRING 2017 UNIT 8: RECURSION RECURSION A recursion function is defined in terms of itself Applies to math, e.g. recursion relations, sequences Fibonacci: F 0 = 1, F 1 = 1, F n = F n-1 + F n-2 Applies

More information

Algorithms A Look At Efficiency

Algorithms A Look At Efficiency Algorithms A Look At Efficiency 1B Big O Notation 15-121 Introduction to Data Structures, Carnegie Mellon University - CORTINA 1 Big O Instead of using the exact number of operations to express the complexity

More information

The Complexity of Algorithms (3A) Young Won Lim 4/3/18

The Complexity of Algorithms (3A) Young Won Lim 4/3/18 Copyright (c) 2015-2018 Young W. Lim. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published

More information

To explain growth rates and why constants and nondominating terms can be ignored in the estimation

To explain growth rates and why constants and nondominating terms can be ignored in the estimation CHAPTER 18 Developing Efficient Algorithms Objectives To estimate algorithm efficiency using the Big O notation ( 18.2). To explain growth rates and why constants and nondominating terms can be ignored

More information

Classic Data Structures Introduction UNIT I

Classic Data Structures Introduction UNIT I ALGORITHM SPECIFICATION An algorithm is a finite set of instructions that, if followed, accomplishes a particular task. All algorithms must satisfy the following criteria: Input. An algorithm has zero

More information

A6-R3: DATA STRUCTURE THROUGH C LANGUAGE

A6-R3: DATA STRUCTURE THROUGH C LANGUAGE A6-R3: DATA STRUCTURE THROUGH C LANGUAGE NOTE: 1. There are TWO PARTS in this Module/Paper. PART ONE contains FOUR questions and PART TWO contains FIVE questions. 2. PART ONE is to be answered in the TEAR-OFF

More information

Data Abstraction & Problem Solving with C++: Walls and Mirrors 6th Edition Carrano, Henry Test Bank

Data Abstraction & Problem Solving with C++: Walls and Mirrors 6th Edition Carrano, Henry Test Bank Data Abstraction & Problem Solving with C++: Walls and Mirrors 6th Edition Carrano, Henry Test Bank Download link: https://solutionsmanualbank.com/download/test-bank-for-data-abstractionproblem-solving-with-c-walls-and-mirrors-6-e-carrano-henry/

More information

Complexity, General. Standard approach: count the number of primitive operations executed.

Complexity, General. Standard approach: count the number of primitive operations executed. Complexity, General Allmänt Find a function T(n), which behaves as the time it takes to execute the program for input of size n. Standard approach: count the number of primitive operations executed. Standard

More information

Ch 8. Searching and Sorting Arrays Part 1. Definitions of Search and Sort

Ch 8. Searching and Sorting Arrays Part 1. Definitions of Search and Sort Ch 8. Searching and Sorting Arrays Part 1 CS 2308 Fall 2011 Jill Seaman Lecture 1 1 Definitions of Search and Sort! Search: find an item in an array, return the index to the item, or -1 if not found.!

More information

Copyright The McGraw-Hill Companies, Inc. Persion required for reproduction or display. What is Recursion?

Copyright The McGraw-Hill Companies, Inc. Persion required for reproduction or display. What is Recursion? Chapter 17 Recursion Original slides from Gregory Byrd, North Carolina State University Modified slides by Chris Wilcox, Colorado State University! A recursive function is one that solves its task by calling

More information

05-15/17 Discussion Notes

05-15/17 Discussion Notes 05-15/17 Discussion Notes PIC 10B Spring 2018 1 Recursion as a topic Understand the simple programs discussed in class (sum of integers and palindrome). Understand the Tower of Hanoi example from class.

More information

CSCI-1200 Data Structures Fall 2017 Lecture 7 Order Notation & Basic Recursion

CSCI-1200 Data Structures Fall 2017 Lecture 7 Order Notation & Basic Recursion CSCI-1200 Data Structures Fall 2017 Lecture 7 Order Notation & Basic Recursion Announcements: Test 1 Information Test 1 will be held Monday, Sept 25th, 2017 from 6-7:50pm Students will be randomly assigned

More information

CS/ENGRD 2110 Object-Oriented Programming and Data Structures Spring 2012 Thorsten Joachims. Lecture 10: Asymptotic Complexity and

CS/ENGRD 2110 Object-Oriented Programming and Data Structures Spring 2012 Thorsten Joachims. Lecture 10: Asymptotic Complexity and CS/ENGRD 2110 Object-Oriented Programming and Data Structures Spring 2012 Thorsten Joachims Lecture 10: Asymptotic Complexity and What Makes a Good Algorithm? Suppose you have two possible algorithms or

More information

Programming II (CS300)

Programming II (CS300) 1 Programming II (CS300) Chapter 08 : Algorithm Analysis MOUNA KACEM mouna@cs.wisc.edu Fall 2018 Algorithm Analysis 2 Introduction Running Time Big-Oh Notation Keep in Mind Introduction Algorithm Analysis

More information

CS126 Final Exam Review

CS126 Final Exam Review CS126 Final Exam Review Fall 2007 1 Asymptotic Analysis (Big-O) Definition. f(n) is O(g(n)) if there exists constants c, n 0 > 0 such that f(n) c g(n) n n 0 We have not formed any theorems dealing with

More information

CSCI-1200 Data Structures Spring 2016 Lecture 7 Iterators, STL Lists & Order Notation

CSCI-1200 Data Structures Spring 2016 Lecture 7 Iterators, STL Lists & Order Notation Today CSCI-1200 Data Structures Spring 2016 Lecture 7 Iterators, STL Lists & Order Notation Another vector operation: pop back Erasing items from vectors is inefficient! Iterators and iterator operations

More information

Programming with Recursion. What Is Recursion?

Programming with Recursion. What Is Recursion? Chapter 7 Programming with Recursion Fall 2017 Yanjun Li CS2200 1 What Is Recursion? How is recursion like a set of Russian dolls? Fall 2017 Yanjun Li CS2200 2 What Is Recursion? Recursive call A method

More information

CSCE 2014 Final Exam Spring Version A

CSCE 2014 Final Exam Spring Version A CSCE 2014 Final Exam Spring 2017 Version A Student Name: Student UAID: Instructions: This is a two-hour exam. Students are allowed one 8.5 by 11 page of study notes. Calculators, cell phones and computers

More information

Recursion. Chapter 5

Recursion. Chapter 5 Recursion Chapter 5 Chapter Objectives To understand how to think recursively To learn how to trace a recursive method To learn how to write recursive algorithms and methods for searching arrays To learn

More information

Recall from Last Time: Big-Oh Notation

Recall from Last Time: Big-Oh Notation CSE 326 Lecture 3: Analysis of Algorithms Today, we will review: Big-Oh, Little-Oh, Omega (Ω), and Theta (Θ): (Fraternities of functions ) Examples of time and space efficiency analysis Covered in Chapter

More information

Algorithm efficiency can be measured in terms of: Time Space Other resources such as processors, network packets, etc.

Algorithm efficiency can be measured in terms of: Time Space Other resources such as processors, network packets, etc. Algorithms Analysis Algorithm efficiency can be measured in terms of: Time Space Other resources such as processors, network packets, etc. Algorithms analysis tends to focus on time: Techniques for measuring

More information

Recursion Chapter 8. What is recursion? How can a function call itself? How can a function call itself? contains a reference to itself.

Recursion Chapter 8. What is recursion? How can a function call itself? How can a function call itself? contains a reference to itself. Recursion Chapter 8 CS 3358 Summer II 2013 Jill Seaman What is recursion?! Generally, when something contains a reference to itself! Math: defining a function in terms of itself! Computer science: when

More information

PROGRAM EFFICIENCY & COMPLEXITY ANALYSIS

PROGRAM EFFICIENCY & COMPLEXITY ANALYSIS Lecture 03-04 PROGRAM EFFICIENCY & COMPLEXITY ANALYSIS By: Dr. Zahoor Jan 1 ALGORITHM DEFINITION A finite set of statements that guarantees an optimal solution in finite interval of time 2 GOOD ALGORITHMS?

More information

Algorithm. Lecture3: Algorithm Analysis. Empirical Analysis. Algorithm Performance

Algorithm. Lecture3: Algorithm Analysis. Empirical Analysis. Algorithm Performance Algorithm (03F) Lecture3: Algorithm Analysis A step by step procedure to solve a problem Start from an initial state and input Proceed through a finite number of successive states Stop when reaching a

More information

Chapter 17 Recursion

Chapter 17 Recursion Chapter 17 Recursion What is Recursion? A recursive function is one that solves its task by calling itself on smaller pieces of data. Similar to recurrence relation in mathematics. Sometimes recursion

More information

Solutions to Assessment

Solutions to Assessment Solutions to Assessment [1] What does the code segment below print? int fun(int x) ++x; int main() int x = 1; fun(x); printf( %d, x); return 0; Answer : 1. The argument to the function is passed by value.

More information

Recursive Definitions

Recursive Definitions Recursion Objectives Explain the underlying concepts of recursion Examine recursive methods and unravel their processing steps Explain when recursion should and should not be used Demonstrate the use of

More information

CSCI 104 Runtime Complexity. Mark Redekopp David Kempe Sandra Batista

CSCI 104 Runtime Complexity. Mark Redekopp David Kempe Sandra Batista 1 CSCI 104 Runtime Complexity Mark Redekopp David Kempe Sandra Batista 2 Motivation You are given a large data set with n = 500,000 genetic markers for 5000 patients and you want to examine that data for

More information

Recursive Algorithms. CS 180 Sunil Prabhakar Department of Computer Science Purdue University

Recursive Algorithms. CS 180 Sunil Prabhakar Department of Computer Science Purdue University Recursive Algorithms CS 180 Sunil Prabhakar Department of Computer Science Purdue University Recursive Algorithms Within a given method, we are allowed to call other accessible methods. It is also possible

More information

What is Recursion? Chapter 17 Recursion. Executing RunningSum. High-Level Example: Binary Search

What is Recursion? Chapter 17 Recursion. Executing RunningSum. High-Level Example: Binary Search Chapter 17 Recursion Original slides from Gregory Byrd, North Carolina State University Modified slides by Chris Wilcox, Colorado State University! A recursive function is one that solves its task by calling

More information

COMP 250 Fall Recursive algorithms 1 Oct. 2, 2017

COMP 250 Fall Recursive algorithms 1 Oct. 2, 2017 Recursion Recursion is a technique for solving problems in which the solution to the problem of size n is based on solutions to versions of the problem of size smaller than n. Many problems can be solved

More information

1 P a g e A r y a n C o l l e g e \ B S c _ I T \ C \

1 P a g e A r y a n C o l l e g e \ B S c _ I T \ C \ BSc IT C Programming (2013-2017) Unit I Q1. What do you understand by type conversion? (2013) Q2. Why we need different data types? (2013) Q3 What is the output of the following (2013) main() Printf( %d,

More information

1. a) What #include statement do you put at the top of a program that does uses cin, cout or endl?

1. a) What #include statement do you put at the top of a program that does uses cin, cout or endl? Exercises with solutions. 1. a) What #include statement do you put at the top of a program that does uses cin, cout or endl? #include b) What using statement do you always put at the top of

More information

O(n): printing a list of n items to the screen, looking at each item once.

O(n): printing a list of n items to the screen, looking at each item once. UNIT IV Sorting: O notation efficiency of sorting bubble sort quick sort selection sort heap sort insertion sort shell sort merge sort radix sort. O NOTATION BIG OH (O) NOTATION Big oh : the function f(n)=o(g(n))

More information

Algorithm Analysis and Design

Algorithm Analysis and Design Algorithm Analysis and Design Dr. Truong Tuan Anh Faculty of Computer Science and Engineering Ho Chi Minh City University of Technology VNU- Ho Chi Minh City 1 References [1] Cormen, T. H., Leiserson,

More information

Module 1: Asymptotic Time Complexity and Intro to Abstract Data Types

Module 1: Asymptotic Time Complexity and Intro to Abstract Data Types Module 1: Asymptotic Time Complexity and Intro to Abstract Data Types Dr. Natarajan Meghanathan Professor of Computer Science Jackson State University Jackson, MS 39217 E-mail: natarajan.meghanathan@jsums.edu

More information

Algorithm Analysis. Spring Semester 2007 Programming and Data Structure 1

Algorithm Analysis. Spring Semester 2007 Programming and Data Structure 1 Algorithm Analysis Spring Semester 2007 Programming and Data Structure 1 What is an algorithm? A clearly specifiable set of instructions to solve a problem Given a problem decide that the algorithm is

More information

Reduction & Recursion Overview

Reduction & Recursion Overview Reduction & Recursion Overview Reduction definition Reduction techniques Recursion definition Recursive thinking (Many) recursion examples Indirect recursion Runtime stack Factorial isnumericstring add

More information

DATA STRUCTURES AND ALGORITHMS

DATA STRUCTURES AND ALGORITHMS DATA STRUCTURES AND ALGORITHMS For COMPUTER SCIENCE DATA STRUCTURES &. ALGORITHMS SYLLABUS Programming and Data Structures: Programming in C. Recursion. Arrays, stacks, queues, linked lists, trees, binary

More information

CSE 143. Complexity Analysis. Program Efficiency. Constant Time Statements. Big Oh notation. Analyzing Loops. Constant Time Statements (2) CSE 143 1

CSE 143. Complexity Analysis. Program Efficiency. Constant Time Statements. Big Oh notation. Analyzing Loops. Constant Time Statements (2) CSE 143 1 CSE 1 Complexity Analysis Program Efficiency [Sections 12.1-12., 12., 12.9] Count number of instructions executed by program on inputs of a given size Express run time as a function of the input size Assume

More information

Chapter 17 Recursion

Chapter 17 Recursion Chapter 17 Recursion What is Recursion? A recursive function is one that solves its task by calling itself on smaller pieces of data. Similar to recurrence function in mathematics. Like iteration -- can

More information

Algorithmic Analysis. Go go Big O(h)!

Algorithmic Analysis. Go go Big O(h)! Algorithmic Analysis Go go Big O(h)! 1 Corresponding Book Sections Pearson: Chapter 6, Sections 1-3 Data Structures: 4.1-4.2.5 2 What is an Algorithm? Informally, any well defined computational procedure

More information

Analysis of Algorithms. CS 1037a Topic 13

Analysis of Algorithms. CS 1037a Topic 13 Analysis of Algorithms CS 1037a Topic 13 Overview Time complexity - exact count of operations T(n) as a function of input size n - complexity analysis using O(...) bounds - constant time, linear, logarithmic,

More information

Binary Search. the towers of Hanoi recursive C++ code. sorted vectors of numbers fast power function. when not to use recursion memoization

Binary Search. the towers of Hanoi recursive C++ code. sorted vectors of numbers fast power function. when not to use recursion memoization Binary Search 1 Recursive Problem Solving the towers of Hanoi recursive C++ code 2 Binary Search sorted vectors of numbers fast power function 3 the Fibonacci numbers when not to use recursion memoization

More information

COMP171 Data Structures and Algorithms Fall 2006 Midterm Examination

COMP171 Data Structures and Algorithms Fall 2006 Midterm Examination COMP171 Data Structures and Algorithms Fall 2006 Midterm Examination L1: Dr Qiang Yang L2: Dr Lei Chen Date: 6 Nov 2006 Time: 6-8p.m. Venue: LTA November 7, 2006 Question Marks 1 /12 2 /8 3 /25 4 /7 5

More information

q To develop recursive methods for recursive mathematical functions ( ).

q To develop recursive methods for recursive mathematical functions ( ). Chapter 8 Recursion CS: Java Programming Colorado State University Motivations Suppose you want to find all the files under a directory that contains a particular word. How do you solve this problem? There

More information

q To develop recursive methods for recursive mathematical functions ( ).

q To develop recursive methods for recursive mathematical functions ( ). /2/8 Chapter 8 Recursion CS: Java Programming Colorado State University Motivations Suppose you want to find all the files under a directory that contains a particular word. How do you solve this problem?

More information

Announcements. Recursion and why study it. Recursive programming. Recursion basic idea

Announcements. Recursion and why study it. Recursive programming. Recursion basic idea Announcements Recursion and why study it Tutoring schedule updated Do you find the sessions helpful? Midterm exam 1: Tuesday, April 11, in class Scope: will cover up to recursion Closed book but one sheet,

More information

! Determine if a number is odd or even. ! Determine if a number/character is in a range. - 1 to 10 (inclusive) - between a and z (inclusive)

! Determine if a number is odd or even. ! Determine if a number/character is in a range. - 1 to 10 (inclusive) - between a and z (inclusive) Final Exam Exercises Chapters 1-7 + 11 Write C++ code to:! Determine if a number is odd or even CS 2308 Fall 2018 Jill Seaman! Determine if a number/character is in a range - 1 to 10 (inclusive) - between

More information

CS 6402 DESIGN AND ANALYSIS OF ALGORITHMS QUESTION BANK

CS 6402 DESIGN AND ANALYSIS OF ALGORITHMS QUESTION BANK CS 6402 DESIGN AND ANALYSIS OF ALGORITHMS QUESTION BANK Page 1 UNIT I INTRODUCTION 2 marks 1. Why is the need of studying algorithms? From a practical standpoint, a standard set of algorithms from different

More information

Programming in Haskell Aug-Nov 2015

Programming in Haskell Aug-Nov 2015 Programming in Haskell Aug-Nov 2015 LECTURE 11 SEPTEMBER 10, 2015 S P SURESH CHENNAI MATHEMATICAL INSTITUTE Measuring efficiency Measuring efficiency Computation is reduction Application of definitions

More information

ALGORITHM ANALYSIS. cs2420 Introduction to Algorithms and Data Structures Spring 2015

ALGORITHM ANALYSIS. cs2420 Introduction to Algorithms and Data Structures Spring 2015 ALGORITHM ANALYSIS cs2420 Introduction to Algorithms and Data Structures Spring 2015 1 administrivia 2 -assignment 2 is due Friday at midnight -note change in due date, and time -tutoring experiment http://doodle.com/89cbb4u5n5acy9ag

More information

Recursion. Let s start by looking at some problems that are nicely solved using recursion. First, let s look at generating The Fibonacci series.

Recursion. Let s start by looking at some problems that are nicely solved using recursion. First, let s look at generating The Fibonacci series. Recursion The programs we have discussed so far have been primarily iterative and procedural. Code calls other methods in a hierarchical manner. For some problems, it is very useful to have the methods

More information

recursive algorithms 1

recursive algorithms 1 COMP 250 Lecture 11 recursive algorithms 1 Oct. 2, 2017 1 Example 1: Factorial (iterative)! = 1 2 3 1 factorial( n ){ // assume n >= 1 result = 1 for (k = 2; k

More information

Analysis of Algorithms Part I: Analyzing a pseudo-code

Analysis of Algorithms Part I: Analyzing a pseudo-code Analysis of Algorithms Part I: Analyzing a pseudo-code Introduction Pseudo-code representation of an algorithm Analyzing algorithms Measuring the running time and memory size of an algorithm Calculating

More information

Algorithms: Efficiency, Analysis, techniques for solving problems using computer approach or methodology but not programming

Algorithms: Efficiency, Analysis, techniques for solving problems using computer approach or methodology but not programming Chapter 1 Algorithms: Efficiency, Analysis, and dod Order Preface techniques for solving problems using computer approach or methodology but not programming language e.g., search Collie Collean in phone

More information

Functions. CS10001: Programming & Data Structures. Sudeshna Sarkar Professor, Dept. of Computer Sc. & Engg., Indian Institute of Technology Kharagpur

Functions. CS10001: Programming & Data Structures. Sudeshna Sarkar Professor, Dept. of Computer Sc. & Engg., Indian Institute of Technology Kharagpur Functions CS10001: Programming & Data Structures Sudeshna Sarkar Professor, Dept. of Computer Sc. & Engg., Indian Institute of Technology Kharagpur 1 Recursion A process by which a function calls itself

More information

Chapter 12 Supplement: Recursion with Java 1.5. Mr. Dave Clausen La Cañada High School

Chapter 12 Supplement: Recursion with Java 1.5. Mr. Dave Clausen La Cañada High School Chapter 12 Supplement: Recursion with Java 1.5 La Cañada High School Recursion: Definitions Recursion The process of a subprogram (method) calling itself. A clearly defined stopping state must exist. The

More information

Introduction to the Analysis of Algorithms. Algorithm

Introduction to the Analysis of Algorithms. Algorithm Introduction to the Analysis of Algorithms Based on the notes from David Fernandez-Baca Bryn Mawr College CS206 Intro to Data Structures Algorithm An algorithm is a strategy (well-defined computational

More information

CSCE 110 Dr. Amr Goneid Exercise Sheet (7): Exercises on Recursion

CSCE 110 Dr. Amr Goneid Exercise Sheet (7): Exercises on Recursion CSCE 110 Dr. Amr Goneid Exercise Sheet (7): Exercises on Recursion Consider the following recursive function: int what ( int x, int y) if (x > y) return what (x-y, y); else if (y > x) return what (x, y-x);

More information

Solving problems by recursion

Solving problems by recursion Solving problems by recursion How can you solve a complex problem? Devise a complex solution Break the complex problem into simpler problems Sometimes, the simpler problem is similar to (but smaller than)

More information

CMSC 132: Object-Oriented Programming II. Recursive Algorithms. Department of Computer Science University of Maryland, College Park

CMSC 132: Object-Oriented Programming II. Recursive Algorithms. Department of Computer Science University of Maryland, College Park CMSC 132: Object-Oriented Programming II Recursive Algorithms Department of Computer Science University of Maryland, College Park Recursion Recursion is a strategy for solving problems A procedure that

More information

CS 216 Exam 1 Fall SOLUTION

CS 216 Exam 1 Fall SOLUTION CS 216 Exam 1 Fall 2004 - SOLUTION Name: Lab Section: Email Address: Student ID # This exam is closed note, closed book. You will have an hour and fifty minutes total to complete the exam. You may NOT

More information