Presentation is loading. Please wait.

Presentation is loading. Please wait.

1 Recursion Overview l Introduction to recursion and recursive methods l Simple popular recursive algorithms l Writing recursive methods l Preview: Parameter.

Similar presentations


Presentation on theme: "1 Recursion Overview l Introduction to recursion and recursive methods l Simple popular recursive algorithms l Writing recursive methods l Preview: Parameter."— Presentation transcript:

1 1 Recursion Overview l Introduction to recursion and recursive methods l Simple popular recursive algorithms l Writing recursive methods l Preview: Parameter passing

2 2 Recursion l We have mentioned earlier that a method can call itself directly or indirectly using an intervening method. l A recursive method is a method that calls itself. l A well-defined recursive method has »A base case; »A recursive step which must always get “closer” to the base case from one invocation to another. l The code of a recursive method must be structured to handle both the base case and the recursive case. l Each call to the method sets up a new execution environment, with new parameters and local variables. l As always, when the method completes, control returns to the method that invoked it (which may be an earlier invocation of itself).

3 3 Recursion: The Factorial Function l The factocial function is defined as: » n! = n*(n-1)*(n-2)*…*1 import java.io.IOException; import TextIO; class Factorial { static TextIO inputStream = new TextIO(System.in); public static int factorial(int num) { if (num == 0) return 1; else return num*factorial(num-1); } public static void main (String[] args) throws IOException { int n, answer; System.out.println("Enter an integer:"); n = inputStream.readInt(); answer = factorial(n); System.out.println("The factorial of” + n + " is ” + answer); }

4 4 Recursion: Sample Execution Trace l Factorial: A Sample Trace factorial (6) = =(6*Factorial(5)) =(6*(5*Factorial(4))) =(6*(5*(4*Factorial(3)))) =(6*(5*(4*(3*Factorial(2))))) =(6*(5*(4*(3*(2*Factorial(1)))))) =(6*(5*(4*(3*(2*1))))) =(6*(5*(4*(3*2)))) =(6*(5*(4*6))) =(6*(5*24)) =(6*120) =720

5 5 Recursion: sumOfSquares l sumOfSquares: Specified as: sumSquares(m,n)=m^2+(m+1)^2+(m+2)^3+…+n^2 import java.io.*; import TextIO; class SumOfSquares { static TextIO inputStream = new TextIO(System.in); static int sumSquares(int from, int to) { if (from < to) return from*from + sumSquares(from+1,to); else return from*from; }

6 6 Recursion: sumOfSquares (cont.) l sumOfSquares (continued) public static void main (String[] args) throws IOException { int from, to, answer; System.out.println("Enter the smaller integer:"); from = inputStream.readInt(); System.out.println("Enter the bigger integer:"); to = inputStream.readInt(); answer = sumSquares(from,to); System.out.println("Sum of Squares from "+ from + " to " +to+" is "+ answer); }

7 7 Recursion: sumOfSquares Execution Trace l sumSquares: A Sample Trace sumSquares (5,10) = =(25+sumSquares(6,10)) =(25+(36+sumSquares(7,10))) =(25+(36+(49+sumSquares(8,10)))) =(25+(36+(49+(64+sumSquares(9,10)) ))) =(25+(36+(49+(64+(81+(sumSquares(1 0,10))))))) =(25+(36+(49+(64+(81+100))))) =(25+(36+(49+(64+181)))) =(25+(36+(49+245))) =(25+(36+294)) =(25+330) =355

8 8 Recursion: The Fibonacci Function l The famous Fibonacci function is defined as fib 0 = 1 fib 1 = 1 fib n = fib(n-1)+fib(n-2), n>=2. import java.io.*; import TextIO; class Fibonacci { static TextIO inputStream = new TextIO(System.in); static int fibonacci (int num) { if (num == 0 || num == 1) return 1; else return (fibonacci(num-1) + fibonacci(num-2)); }

9 9 Recursion: The Fiboacci Function l Fibonacci public static void main (String[] args) throws IOException { int n, answer; System.out.println("Enter an integer:"); n = inputStream.readInt(); answer = fibonacci(n); System.out.println("The "+n+ "th Fibonacci number is: "+ answer); }

10 10 Recursion: Simple Popular Recursive Algorithms (cont.) l Exercises: Write complete recursive programs for the following algorithms 1 power(x,y) that implements x^y using repeated additions and without using multiplication. Assume x to be a floating point value and y to be a nonnegative integer. 2 gcd(m,n) that implements the Euclid’s algorithm of finding the greatest common divisor of m and n. Assume m and n to be positive integers. 3. isPlaindrome() which given a string prints an informative error message saying whether or not the given string is a palindrome (reads the same when read from left to right or from right to left).


Download ppt "1 Recursion Overview l Introduction to recursion and recursive methods l Simple popular recursive algorithms l Writing recursive methods l Preview: Parameter."

Similar presentations


Ads by Google