CS112_10_Slides-RecursiveProcedures

# CS112_10_Slides-RecursiveProcedures - Recursive Procedures...

This preview shows pages 1–10. Sign up to view the full content.

Recursive Procedures Yinglin Wang CS Dept., SJTU

This preview has intentionally blurred sections. Sign up to view the full version.

View Full Document
1. Review of Recursion definition 2. Review of The pitfalls you should avoid 3. The comparison of recursion and iteration 4. Recursive procedures Contents of this lecture:
C) Recursion is when a method either directly or indirectly makes a call to itself. B) Recursion - The process of a function calling itself. (short definition) 1. Several Definition of Recursion: D) Recursion -The process of a function calling itself or calling a sequence of other functions, one of which eventually calls the first function again. (precise definition) A) recursion is a solution technique in which large problems are solved by reducing them to smaller problems of the same form .

This preview has intentionally blurred sections. Sign up to view the full version.

View Full Document
Recursive problems are like russiandolls: •each large instance contains a similar, slightly smaller one •there is a smallest one that does not contain any dolls Visualization of Recursive Problems
2. Pitfalls You Should Avoid When Using Recursion 1. No or missed base case If the base case is not reached the recursion will not stop, and the stack of function calls will exhaust the resources of the machine. This mistake is not caught by the compiler, it is a logical error that causes a run-time error. 2. Incorrect recursive decomposition. The function will compute the wrong value. This is a logical error.

This preview has intentionally blurred sections. Sign up to view the full version.

View Full Document
int RaiseToPower(int n, int k) { int i; int result = 1; for(i=0; i<k; i++) { result *= n; } return result; } 3. Comparison: Recursion Vs. Iteration Question: Is it possible to write an iterative version for every recursive function? Answer: yes –true. It is possible to write an iterative version for every recursive function. But sometimes the recursive version is very simple whereas the iterative function for the same task is more complicated. e.g., there is a different way to compute n k that seems much simpler:
Q: Are recursive functions more efficient than iterative (looping) ones? A: It is hard to say because it depends many factors. But often the iterative solution is the better solution in terms of performance. - Usually calling a function takes time because copies of all variables and arguments used in the function are pushed onto the call stack, and popped off again at the end of the function. - if run with large arguments, recursive functions also cause space problems: each copy of the arguments and variables of a function on the call stack eats up space. But sometimes it is easier to find the solution using recursion. Recursion Vs. Iteration: Performance Issues

This preview has intentionally blurred sections. Sign up to view the full version.

View Full Document
Problem 1: Write a recursion function find the minimum in an array of length n. Class exercises Problem 2: Write a recursion function to sum the elements of an integer array.
int arrayMin(int *ar, int len) { int restmin; if(len ==1) { return ar[0]; //base case } else { restmin = arrayMin(ar, len-1); //recursive call if(ar[len-1] < restmin) { return ar[len-1]; return restmin; } } } idea: to compute the minimum of a[0], a[1], . .., a[n-1]: if (a[n-1] < minimum of (a[0], a[1], . ..,a[n-2]) return a[n-1] else return minimum of a[0], a[1],. ..,a[n-2] What’ s the base case? –an array with one element solution to Problem 1: Write a recursion function find the minimum in an array of length n.

This preview has intentionally blurred sections. Sign up to view the full version.

View Full Document
This is the end of the preview. Sign up to access the rest of the document.

{[ snackBarMessage ]}

### Page1 / 52

CS112_10_Slides-RecursiveProcedures - Recursive Procedures...

This preview shows document pages 1 - 10. Sign up to view the full document.

View Full Document
Ask a homework question - tutors are online