








Study with the several resources on Docsity
Earn points by helping other students or get them with a premium plan
Prepare for your exams
Study with the several resources on Docsity
Earn points to download
Earn points by helping other students or get them with a premium plan
An in-depth exploration of recursion in java programming, covering recursive definitions, algorithms, methods, base cases, general cases, and designing recursive methods. It also discusses recursion vs. Iteration and various recursive functions such as factorial, largest value in an array, recursive fibonacci, and towers of hanoi.
Typology: Study notes
1 / 14
This page cannot be seen from the preview
Don't miss anything!









Java Programming: From Problem Analysis to Program Design, Second Edition 1
Java Programming: From Problem Analysis to Program Design, Second Edition 2
Java Programming: From Problem Analysis to Program Design, Second Edition 3
Algorithm that finds the solution to a given problem by reducing the problem to smaller versions of itself. Has one or more base cases. Implemented using recursive methods.
Method that calls itself.
Case in recursive definition in which the solution is obtained directly. Stops the recursion.
Java Programming: From Problem Analysis to Program Design, Second Edition 4
Java Programming: From Problem Analysis to Program Design, Second Edition 7
Java Programming: From Problem Analysis to Program Design, Second Edition 8
Understand problem requirements.
Determine limiting conditions.
Identify base cases.
Provide direct solution to each base case.
Identify general cases.
Provide solutions to general cases in terms of smaller versions of general cases.
Java Programming: From Problem Analysis to Program Design, Second Edition 9
public static int fact(int num) { if (num = = 0) return 1; else return num * fact(num – 1); }
Java Programming: From Problem Analysis to Program Design, Second Edition 10
Java Programming: From Problem Analysis to Program Design, Second Edition 13
Java Programming: From Problem Analysis to Program Design, Second Edition 14
public static int rFibNum(int a, int b, int n) { if(n = = 1) return a; else if (n = = 2) return b; else return rFibNum(a, b, n -1) + rFibNum(a, b, n - 2); }
Java Programming: From Problem Analysis to Program Design, Second Edition 15
Recursive Fibonacci
Java Programming: From Problem Analysis to Program Design, Second Edition 16
Towers of Hanoi: Three Disk Problem
Java Programming: From Problem Analysis to Program Design, Second Edition 19
public static void moveDisks(int count, int needle1, int needle3, int needle2) { if (count > 0) { moveDisks(count - 1, needle1, needle2, needle3); System.out.println("Move disk " + count
Java Programming: From Problem Analysis to Program Design, Second Edition 20
Java Programming: From Problem Analysis to Program Design, Second Edition 21
public static void decToBin(int num, int base) { if (num > 0) { decToBin(num / base, base); System.out.print(num % base); } }
Java Programming: From Problem Analysis to Program Design, Second Edition 22
Java Programming: From Problem Analysis to Program Design, Second Edition 25
private void drawSierpinski(Graphics g, int lev, Point p1, Point p2, Point p3) { Point midP1P2; Point midP2P3; Point midP3P1; if (lev > 0) { g.drawLine(p1.x, p1.y, p2.x, p2.y); g.drawLine(p2.x, p2.y, p3.x, p3.y); g.drawLine(p3.x, p3.y, p1.x, p1.y); midP1P2 = midPoint(p1, p2); midP2P3 = midPoint(p2, p3); midP3P1 = midPoint(p3, p1); drawSierpinski(g, lev - 1, p1, midP1P2, midP3P1); drawSierpinski(g, lev - 1, p2, midP2P3, midP1P2); drawSierpinski(g, lev - 1, p3, midP3P1, midP2P3); } }
Programming Example: Sierpinski Gasket
Java Programming: From Problem Analysis to Program Design, Second Edition 26
Programming Example: Sierpinski Gasket
Java Programming: From Problem Analysis to Program Design, Second Edition 27
Recursive definitions
Recursive algorithms
Recursive methods
Base cases & General cases
Designing recursive methods
Recursion vs. iteration
Various recursive functions