Logic, Algorithms and Data Structures Recursion and Stacks. By: Jonas Öberg

Size: px
Start display at page:

Download "Logic, Algorithms and Data Structures Recursion and Stacks. By: Jonas Öberg"

Transcription

1 Logic, Algorithms and Data Structures Recursion and Stacks M1 By: Jonas Öberg

2 What is recursion? Quick answer: A recursive function is a function which uses itself Example We define by the use of f( n ) = 2 f (n -1) if n >= 1 otherwise 1

3 What is recursion? What does it do?? f(3) { 3 >= 1 } f(3) = 2 * f(3-1) = 2 * f(2) f(3) = 2 * f(2) f(2) { 2 >= 1 } f(2) = 2 * f(2-1) = 2 * f(1) f(3) = 2 * 2 * f(1) f(1) { 1 >= 1} f(1) = 2 * f(1-1) = 2 * f(0) f( n ) = 2 f (n -1) if n >= 1 1 otherwise f(3) = 2 * 2 * 2 * f(0) f(0) { 0 >= 1 } f(0) = 1 f(3) = 2 * 2 * 2 * 1 f(3) = 8

4 How do we write recursively? Problem: Write a function that computes the smallest element in a set. Sample data: A = { 7, 3, 5, 9, 2, 12 } Stated goal: f({7, 3, 5, 9, 2, 12}) = 2

5 How to think Assume that the function already does its job for a subset of A, ie. A-{x} f (A-{x}) Our parts: f (A-{x}) and x To this, we only need to add some glue and/or gaff tape

6 How to think Given: A = {7, 3, 5, 9, 2, 12} x = 7 We assume that: f(a-{x}) = 2 We want a function such that: f(a) = f(a-{x})... x = 2

7 How to think So, we want to find a function which solves: f(a) = f(a-{x})... x = 2 f(a) = = 2 This is what we wanted: write a function that computes the smallest element in a set. f(a) = min(2, 7) = 2

8 How to think min(x, y) = if x <= y then x else y So, min(x, y) will be our glue! f(a) = min(f(a-{x}), x)

9 How to think f( A ) = min(f (A-{x}), x) But there's something missing here!

10 The Base Case Computing f({3, 5, 7}) f({3, 5, 7}) = min(3, f({5, 7})) = min(3, min(5, f({7}))) = min(3, min(5, min(7, f({})))) = f ( A ) = min( x, f(a {x})) min(3, min(5, min(7, min({}, f({}))))) = min(3, min(5, min(7, min({}, min({}, f({})))))))... We need to define f({}) This is called the Base Case

11 Implementing the base case What's the smallest value of an empty set? f( A ) =, if A = {} min(f (A-{x}), x), otherwise

12 Implementation f( A ) =, if A = {} min(f (A-{x}), x), otherwise int setmin(set a) { if (a.isempty()) { return Integer.MAX_VALUE; } } Iterator<Integer> i = a.iterator(); int x = i.next(); i.remove(); Return Math.min(x, setmin(a));

13 Computing faculty f(5) = 5 * 4 * 3 * 2 * 1 = 120 Assume that f(4) = 24 already works Then, f(5) = 5 * f(4) f(x) = x * f(x-1)

14 Faculty base case f( x ) = 1, if x = 1 x * f (x-1), otherwise int faculty(int x) { if (x == 1) { return 1; } } return x * faculty(x - 1); f(5) = 5 * f(4) = 5 * 4 * f(3) = 5 * 4 * 3 * f(2) = 5 * 4 * 3 * 2 * f(1) = 5 * 4 * 3 * 2 * 1 = 120

15 Stacks

16 When is the stack used? main() function(1, Kalle, 34); function(a, b, c) List l = new ArrayList(); l.add(b); 1 Kalle 34 b Stack

17 Stacks when recursing f( x ) = 1, if x = 1 x * f (x-1), otherwise faculty(5) 5 * faculty(4) 5 * 4 * faculty(3) 5 * 4 * 3 * faculty(2) 5 * 4 * 3 * 2 * faculty(1) 5 * 4 * 3 * 2 * Stack

18 public class RecHelloWorld { public static void write_string (String s) { System.out.printf("\n%s\n", s); write_string(s); } public static void main(string[] args) { write_string("hello World"); } } Hello World Hello World Hello World Hello World Hello World Exception in thread "main" java.lang.stackoverflowerror

19 Tower of Hanoi

20 Algorithm Total of rings = n Step 1: Move rings n-1 to Help tower Step 2: Move ring n to Goal tower Step 3: Move rings n-1 to Goal tower

21 Algorithm Base case: moving ring 1 from Start to Goal Assume that we have a function to move rings n-1. Solve the problem for moving ring n.

22 Algorithm public static void move(int nr, String from, String to) { System.out.printf("%2d: Moving ring nr %d from %s to %s\n", i, nr, from, to); }

23 Algorithm public static void tower(int nr, String start, String goal, String help) { if (nr == 1) //Base case move(1, start, goal); else { tower(nr 1, start, help, goal); move(nr, start, goal); tower(nr 1, help, goal, start); } } Step 1: Move rings n-1 to Help tower Step 2: Move ring n to Goal tower Step 3: Move rings n-1 to Goal tower

24

25 public class Hanoi { public static int i = 0; // global variable to keep track of method calls public static void move(int nr, String from, String to) { i++; System.out.printf("%2d: Moving ring nr %d from %s to %s\n", i, nr, from, to); } public static void tower(int nr, String start, String goal, String help) { if (nr == 1) //Base case move(1, start, goal); else { tower(nr 1,start, help, goal); move(nr, start, goal); tower(nr 1, help, goal, start); } } } public static void main(string[] args) { int nr = Integer.parseInt(args[0]); tower(nr,"start Tower", "Goal Tower", "Help Tower"); }

26 java Hanoi 3 1: Moving ring nr 1 from Start Tower to Goal Tower 2: Moving ring nr 2 from Start Tower to Help Tower 3: Moving ring nr 1 from Goal Tower to Help Tower 4: Moving ring nr 3 from Start Tower to Goal Tower 5: Moving ring nr 1 from Help Tower to Start Tower 6: Moving ring nr 2 from Help Tower to Goal Tower 7: Moving ring nr 1 from Start Tower to Goal Tower

27 Call tree

28 Labyrinth

29 Code snippet

30

31 RPN calculator * 72 / Stack

32 RPN calculator * * Stack

33 Koch snowflakes 1. Start with an equilateral triangle 2. Divide each line in turn in three parts 3. Draw another equilateral triangle extending from the middle 4. Repeat 2

34 Fractal grammar F = Move forward + = turn left 60 degrees - = turn right 60 degrees

35 Turtle graphics Imagine that you're a turtle! F + + F + + F

36 Fractal grammar F = Move forward + = turn left 60 degrees - = turn right 60 degrees Koch snowflake Axiom: F + + F + + F Rules: F := F F + + F - F

37 Alternatives to Koch Cesaro fractal

38 Serpinski triangle A, B = Move forward + = turn left 60 degrees - = turn right 60 degrees Serpinski triangle Axiom: A Rules: A := B A B and B := A + B + A

39 Fractal plant F = Move forward -/+ = turn right/left 25 degrees X = noop [ = save position and angle to stack ] = restore position and angle from stack Fractal plant Axiom: X Rules: X := F-[[X]+X]+F[+FX]-X and F := FF

40 Fractal plant result

41 Of course, there's work to do..

11. Recursion. n (n 1)!, otherwise. Mathematical Recursion. Recursion in Java: Infinite Recursion. 1, if n 1. n! =

11. Recursion. n (n 1)!, otherwise. Mathematical Recursion. Recursion in Java: Infinite Recursion. 1, if n 1. n! = Mathematical Recursion 11. Recursion Mathematical Recursion, Termination, Call Stack, Examples, Recursion vs. Iteration, Lindenmayer Systems Many mathematical functions can be naturally defined recursively.

More information

12. Recursion. n (n 1)!, otherwise. Educational Objectives. Mathematical Recursion. Recursion in Java: 1, if n 1. n! =

12. Recursion. n (n 1)!, otherwise. Educational Objectives. Mathematical Recursion. Recursion in Java: 1, if n 1. n! = Educational Objectives You understand how a solution to a recursive problem can be implemented in Java. You understand how methods are being executed in an execution stack. 12. Recursion Mathematical Recursion,

More information

Unit 5: Recursive Thinking

Unit 5: Recursive Thinking AP Computer Science Mr. Haytock Unit 5: Recursive Thinking Topics: I. Recursion II. Computational limits III. Recursion in graphics Materials: I. Hein ch. 3.2 II. Rawlins: Towers of Hanoi III. Lewis &

More information

Experiment: The Towers of Hanoi. left middle right

Experiment: The Towers of Hanoi. left middle right Experiment: The Towers of Hanoi 1 Experiment: The Towers of Hanoi 1 Die Türme von Hanoi - So gehts! 2 Die Türme von Hanoi - So gehts! 2 Die Türme von Hanoi - So gehts! 2 Die Türme von Hanoi - So gehts!

More information

Recursive Thinking. Chapter 8: Recursion. Recursive Definitions. Recursion. Java Software Solutions for AP* Computer Science A 2nd Edition

Recursive Thinking. Chapter 8: Recursion. Recursive Definitions. Recursion. Java Software Solutions for AP* Computer Science A 2nd Edition Chapter 8: Recursion Presentation slides for Recursive Thinking Recursion is a programming technique in which a method can call itself to solve a problem Java Software Solutions for AP* Computer Science

More information

2.3 Recursion 7/23/2015 3:06:35 PM

2.3 Recursion 7/23/2015 3:06:35 PM 3 Recursion Introduction to Programming in Java: An Interdisciplinary Approach Robert Sedgewick and Kevin Wayne Copyright 2002 2010 7/23/2015 3:06:35 PM Factorial The factorial of a positive integer N

More information

Fractals and L- Systems

Fractals and L- Systems Fractals and L- Systems Sanyam Gupta January 26, 2018 1 Lindenmayer systems Have you ever wondered, how to formulate a mathematical equation for the plant in your verandah or garden? The nature produces

More information

2.3 Recursion 7/21/2014 5:12:34 PM

2.3 Recursion 7/21/2014 5:12:34 PM 3 Recursion Introduction to Programming in Java: An Interdisciplinary Approach Robert Sedgewick and Kevin Wayne Copyright 2002 2010 7/21/2014 5:12:34 PM Factorial The factorial of a positive integer N

More information

Big Java, Late Objects, Cay Horstmann, Copyright 2013 John Wiley and Sons, Inc. All rights reserved. Towers of Hanoi

Big Java, Late Objects, Cay Horstmann, Copyright 2013 John Wiley and Sons, Inc. All rights reserved. Towers of Hanoi Towers of Hanoi WE5 W o r k e d E x a m p l e 1 3.2 Towers of Hanoi The Towers of Hanoi puzzle has a board with three pegs and a stack of disks of decreasing size, initially on the first peg (see Figure

More information

Recursion. Fundamentals of Computer Science

Recursion. Fundamentals of Computer Science Recursion Fundamentals of Computer Science Outline Recursion A method calling itself All good recursion must come to an end A powerful tool in computer science Allows writing elegant and easy to understand

More information

Recursion. Overview. Mathematical induction. Hello recursion. Recursion. Example applications. Goal: Compute factorial N! = 1 * 2 * 3...

Recursion. Overview. Mathematical induction. Hello recursion. Recursion. Example applications. Goal: Compute factorial N! = 1 * 2 * 3... Recursion Recursion Overview A method calling itself A new way of thinking about a problem Divide and conquer A powerful programming paradigm Related to mathematical induction Example applications Factorial

More information

Recursion CSCI 136: Fundamentals of Computer Science II Keith Vertanen Copyright 2011

Recursion CSCI 136: Fundamentals of Computer Science II Keith Vertanen Copyright 2011 Recursion CSCI 136: Fundamentals of Computer Science II Keith Vertanen Copyright 2011 Recursion A method calling itself Overview A new way of thinking about a problem Divide and conquer A powerful programming

More information

CMSC 150 LECTURE 7 RECURSION

CMSC 150 LECTURE 7 RECURSION CMSC 150 INTRODUCTION TO COMPUTING ACKNOWLEDGEMENT: THESE SLIDES ARE ADAPTED FROM SLIDES PROVIDED WITH INTRODUCTION TO PROGRAMMING IN JAVA: AN INTERDISCIPLINARY APPROACH, SEDGEWICK AND WAYNE (PEARSON ADDISON-WESLEY

More information

CSC 470 Computer Graphics. Fractals

CSC 470 Computer Graphics. Fractals CSC 47 Computer Graphics Fractals 1 This Week Approaches to Infinity Fractals and Self-Similarity Similarity Iterative Function Systems Lindenmayer Systems Curves Natural Images (trees, landscapes..) Introduction

More information

EXERCISES SOFTWARE DEVELOPMENT I. 10 Recursion, Binary (Search) Trees Towers of Hanoi // Tree Traversal 2018W

EXERCISES SOFTWARE DEVELOPMENT I. 10 Recursion, Binary (Search) Trees Towers of Hanoi // Tree Traversal 2018W EXERCISES SOFTWARE DEVELOPMENT I 10 Recursion, Binary (Search) Trees Towers of Hanoi // Tree Traversal 2018W Recursion I RECURSION :: MOTIVATION AND DEFINITION Many complex real-world problems can be solved

More information

Midterm Project: L-systems in Practice and Theory

Midterm Project: L-systems in Practice and Theory Midterm Project: L-systems in Practice and Theory Joey Gonzales-Dones March 28, 2016 1 Introduction Lindenmayer systems, or L-systems, are systems for algorithmically rewriting a string of characters.

More information

Computer Science 173 Fall, Project 3: Lindenmayer Systems Due in class on Monday, September 28

Computer Science 173 Fall, Project 3: Lindenmayer Systems Due in class on Monday, September 28 Computer Science 173 all, 2015 Project 3: Lindenmayer Systems Due in class on Monday, September 28 Work on this project with a partner. Create a new directory for this project, copy the Makefile from the

More information

Total Score /15 /20 /30 /10 /5 /20 Grader

Total Score /15 /20 /30 /10 /5 /20 Grader NAME: NETID: CS2110 Fall 2009 Prelim 2 November 17, 2009 Write your name and Cornell netid. There are 6 questions on 8 numbered pages. Check now that you have all the pages. Write your answers in the boxes

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

L-Systems and Affine Transformations

L-Systems and Affine Transformations L-Systems and Affine Transformations Moreno Marzolla Dip. di Informatica Scienza e Ingegneria (DISI) Università di Bologna http://www.moreno.marzolla.name/ Copyright 2014, Moreno Marzolla, Università di

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

CSCI 136 Written Exam #2 Fundamentals of Computer Science II Spring 2015

CSCI 136 Written Exam #2 Fundamentals of Computer Science II Spring 2015 CSCI 136 Written Exam #2 Fundamentals of Computer Science II Spring 2015 Name: This exam consists of 6 problems on the following 6 pages. You may use your double- sided hand- written 8 ½ x 11 note sheet

More information

Total Score /15 /20 /30 /10 /5 /20 Grader

Total Score /15 /20 /30 /10 /5 /20 Grader NAME: NETID: CS2110 Fall 2009 Prelim 2 November 17, 2009 Write your name and Cornell netid. There are 6 questions on 8 numbered pages. Check now that you have all the pages. Write your answers in the boxes

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

CIS 110 Spring 2012 Final Exam, 7 May 2012, Answer Key. Miscellaneous

CIS 110 Spring 2012 Final Exam, 7 May 2012, Answer Key. Miscellaneous CIS 110 Spring 2012 Final Exam, 7 May 2012, Answer Key Miscellaneous 1. (1 points) (a) Write your name, recitation number, and PennKey (username) on the front of the exam. (b) Sign the certification that

More information

Lists. CSC212 Lecture 8 D. Thiebaut, Fall 2014

Lists. CSC212 Lecture 8 D. Thiebaut, Fall 2014 Lists CSC212 Lecture 8 D. Thiebaut, Fall 2014 Review List = Organization of Data in a Linear Fashion, where Order is Important Set of actions that can be carried out efficiently on the data. Typical Actions

More information

! New mode of thinking. ! Powerful programming paradigm. ! Mergesort, FFT, gcd. ! Linked data structures.

! New mode of thinking. ! Powerful programming paradigm. ! Mergesort, FFT, gcd. ! Linked data structures. Overview 2.3 Recursion What is recursion? When one function calls itself directly or indirectly. Why learn recursion? New mode of thinking. Powerful programming paradigm. Many computations are naturally

More information

CmpSci 187: Programming with Data Structures Spring 2015

CmpSci 187: Programming with Data Structures Spring 2015 CmpSci 187: Programming with Data Structures Spring 2015 Lecture #9 John Ridgway February 26, 2015 1 Recursive Definitions, Algorithms, and Programs Recursion in General In mathematics and computer science

More information

More modelling. Ruth Aylett

More modelling. Ruth Aylett More modelling Ruth Aylett Overview The great outdoors: fractals L-systems City Models Procedural generation of models How to make models.. Interactive modeling Human with a software modeling tool Scanning

More information

cs Java: lecture #6

cs Java: lecture #6 cs3101-003 Java: lecture #6 news: homework #5 due today little quiz today it s the last class! please return any textbooks you borrowed from me today s topics: interfaces recursion data structures threads

More information

C22a: Problem Solving using Recursion

C22a: Problem Solving using Recursion CISC 3115 TY3 C22a: Problem Solving using Recursion Hui Chen Department of Computer & Information Science CUNY Brooklyn College 11/6/2018 CUNY Brooklyn College 1 Outline Characteristics of recursion Recursion

More information

DM550 / DM857 Introduction to Programming. Peter Schneider-Kamp

DM550 / DM857 Introduction to Programming. Peter Schneider-Kamp DM550 / DM857 Introduction to Programming Peter Schneider-Kamp petersk@imada.sdu.dk http://imada.sdu.dk/~petersk/dm550/ http://imada.sdu.dk/~petersk/dm857/ RECURSION (REVISITED) 2 Recursion (Revisited)

More information

Recursive Problem Solving

Recursive Problem Solving Recursive Problem Solving Objectives Students should: Be able to explain the concept of recursive definition. Be able to use recursion in Java to solve problems. 2 Recursive Problem Solving How to solve

More information

CS 4300 Computer Graphics. Prof. Harriet Fell Fall 2012 Lecture 28 November 8, 2012

CS 4300 Computer Graphics. Prof. Harriet Fell Fall 2012 Lecture 28 November 8, 2012 CS 4300 Computer Graphics Prof. Harriet Fell Fall 2012 Lecture 28 November 8, 2012 1 Today s Topics Fractals Mandelbrot Set Julia Sets L-Systems 2 Fractals The term fractal was coined in 1975 by Benoît

More information

CS18000: Programming I

CS18000: Programming I CS18000: Programming I Linked Data Structures 5 April 2010 Prof. Chris Clifton Multiple Items: Beyond Arrays interface Set { boolean contains(e item); /* true iff x s.t. item.equals(x) */ void add(e

More information

26 Feb Recursion. Overview. Greatest Common Divisor. Greatest Common Divisor. Greatest Common Divisor. Greatest Common Divisor

26 Feb Recursion. Overview. Greatest Common Divisor. Greatest Common Divisor. Greatest Common Divisor. Greatest Common Divisor Overview.3 Recursion What is recursion? When one function calls itself directly or indirectly. Why learn recursion? New mode of thinking. Powerful programming paradigm. Many computations are naturally

More information

Lecture 10: Lindenmayer Systems

Lecture 10: Lindenmayer Systems Carl Kingsford, 0-01, Fall 015 Lecture 10: Lindenmayer Systems (Stacks, Queues, append, and list literals) Lindenmayer systems or L-systems are a way to model complex shape contruction simply. They are

More information

Grade 6 Math Circles. Shapeshifting

Grade 6 Math Circles. Shapeshifting Faculty of Mathematics Waterloo, Ontario N2L 3G1 Plotting Grade 6 Math Circles October 24/25, 2017 Shapeshifting Before we begin today, we are going to quickly go over how to plot points. Centre for Education

More information

PLT Miscellaneous Libraries: Reference Manual

PLT Miscellaneous Libraries: Reference Manual PLT Miscellaneous Libraries: Reference Manual PLT (scheme@plt-scheme.org) Version 200 June 2002 Copyright notice Copyright c 1996-2002 PLT Permission to make digital/hard copies and/or distribute this

More information

CS18000: Problem Solving and Object-Oriented Programming

CS18000: Problem Solving and Object-Oriented Programming CS18000: Problem Solving and Object-Oriented Programming Recursion 28 March 2011 Prof. Chris Clifton Recursion Idea: break a problem down into small, similar sub-problems Write a method to solve first

More information

Fractals & Iterative Function Systems

Fractals & Iterative Function Systems CS 543: Computer Graphics Fractals & Iterative Function Systems Robert W. Lindeman Associate Professor Department of Computer Science Worcester Polytechnic Institute gogo@wpi.edu (with lots of help from

More information

DM537 Object-Oriented Programming. Peter Schneider-Kamp.

DM537 Object-Oriented Programming. Peter Schneider-Kamp. DM537 Object-Oriented Programming Peter Schneider-Kamp petersk@imada.sdu.dk! http://imada.sdu.dk/~petersk/dm537/! RECURSION (REVISITED) 2 Recursion (Revisited) recursive function = a function that calls

More information

2.3 Recursion. Overview. Mathematical Induction. What is recursion? When one function calls itself directly or indirectly.

2.3 Recursion. Overview. Mathematical Induction. What is recursion? When one function calls itself directly or indirectly. 2.3 Recursion Overview Mathematical Induction What is recursion? When one function calls itself directly or indirectly. Why learn recursion? New mode of thinking. Powerful programming paradigm. Many computations

More information

CS/CE 2336 Computer Science II

CS/CE 2336 Computer Science II S/E 2336 omputer Science II UT D Session 10 Recursion dapted from D Liang s Introduction to Java Programming, 8 th Ed 2 factorial(0) = 1; omputing Factorial factorial(n) = n*factorial(n-1); n! = n * (n-1)!

More information

12.2 Plants. CS Dept, UK

12.2 Plants. CS Dept, UK 1 12.2 Plants - modeling and animation of plants represents an interesting and challenging area - exhibit arbitrary complexity while possessing a constrained branching structure - grow from a single source

More information

DM503 Programming B. Peter Schneider-Kamp.

DM503 Programming B. Peter Schneider-Kamp. DM503 Programming B Peter Schneider-Kamp petersk@imada.sdu.dk! http://imada.sdu.dk/~petersk/dm503/! ABSTRACT DATATYPE FOR LISTS 2 List ADT: Specification data are all integers, here represented as primitive

More information

2.3 Recursion. Overview. Greatest Common Divisor. Greatest Common Divisor. What is recursion? When one function calls itself directly or indirectly.

2.3 Recursion. Overview. Greatest Common Divisor. Greatest Common Divisor. What is recursion? When one function calls itself directly or indirectly. Overview 2.3 Recursion What is recursion? When one function calls itself directly or indirectly. Why learn recursion? New mode of thinking. Powerful programming paradigm. Many computations are naturally

More information

Linked Structures. See Section 3.2 of the text.

Linked Structures. See Section 3.2 of the text. Linked Structures See Section 3.2 of the text. First, notice that Java allows classes to be recursive, in the sense that a class can have an element which is itself an object of that class: class Person

More information

Recursion Chapter 4 Self-Reference. Recursive Definitions Inductive Proofs Implementing Recursion

Recursion Chapter 4 Self-Reference. Recursive Definitions Inductive Proofs Implementing Recursion Recursion Chapter 4 Self-Reference Recursive Definitions Inductive Proofs Implementing Recursion Imperative Algorithms Based on a basic abstract machine model - linear execution model - storage - control

More information

2.3 Recursion. Overview. Greatest Common Divisor. Greatest Common Divisor. What is recursion? When one function calls itself directly or indirectly.

2.3 Recursion. Overview. Greatest Common Divisor. Greatest Common Divisor. What is recursion? When one function calls itself directly or indirectly. Overview 2.3 Recursion What is recursion? When one function calls itself directly or indirectly. Why learn recursion? New mode of thinking. Powerful programming paradigm. Many computations are naturally

More information

CSC 148 Lecture 3. Dynamic Typing, Scoping, and Namespaces. Recursion

CSC 148 Lecture 3. Dynamic Typing, Scoping, and Namespaces. Recursion CSC 148 Lecture 3 Dynamic Typing, Scoping, and Namespaces Recursion Announcements Python Ramp Up Session Monday June 1st, 1 5pm. BA3195 This will be a more detailed introduction to the Python language

More information

Round and round recursion: the good, the bad, the ugly, the hidden

Round and round recursion: the good, the bad, the ugly, the hidden Round and round recursion: the good, the bad, the ugly, the hidden ACSE 2006 Talk Troy Vasiga Lecturer, University of Waterloo Director, CCC Outline Recursion defined Real-world examples ("The hidden")

More information

Nested Loops. A loop can be nested inside another loop.

Nested Loops. A loop can be nested inside another loop. Nested Loops A loop can be nested inside another loop. Nested loops consist of an outer loop and one or more inner loops. Each time the outer loop is repeated, the inner loops are reentered, and started

More information

Overview. What is recursion? When one function calls itself directly or indirectly.

Overview. What is recursion? When one function calls itself directly or indirectly. 1 2.3 Recursion Overview What is recursion? When one function calls itself directly or indirectly. Why learn recursion? New mode of thinking. Powerful programming paradigm. Many computations are naturally

More information

Method Invocation. Zheng-Liang Lu Java Programming 189 / 226

Method Invocation. Zheng-Liang Lu Java Programming 189 / 226 Method Invocation Note that the input parameters are sort of variables declared within the method as placeholders. When calling the method, one needs to provide arguments, which must match the parameters

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

Recursion. CSCI 112: Programming in C

Recursion. CSCI 112: Programming in C Recursion CSCI 112: Programming in C 1 What is recursion? Recursion looks at a large problem as a bunch of smaller versions of the same problem. 2 2 What is recursion? Recursion looks at a large problem

More information

Recursion. notes Chapter 8

Recursion. notes Chapter 8 Recursion notes Chapter 8 1 Tower of Hanoi A B C move the stack of n disks from A to C can move one disk at a time from the top of one stack onto another stack cannot move a larger disk onto a smaller

More information

Objects as a programming concept

Objects as a programming concept Objects as a programming concept IB Computer Science Content developed by Dartford Grammar School Computer Science Department HL Topics 1-7, D1-4 1: System design 2: Computer Organisation 3: Networks 4:

More information

CSC 1351: Final. The code compiles, but when it runs it throws a ArrayIndexOutOfBoundsException

CSC 1351: Final. The code compiles, but when it runs it throws a ArrayIndexOutOfBoundsException VERSION A CSC 1351: Final Name: 1 Interfaces, Classes and Inheritance 2 Basic Data Types (arrays, lists, stacks, queues, trees,...) 2.1 Does the following code compile? If it does not, how can it be fixed?

More information

Copyright 2009 Pearson Education, Inc. Chapter 9 Section 7 - Slide 1 AND

Copyright 2009 Pearson Education, Inc. Chapter 9 Section 7 - Slide 1 AND Copyright 2009 Pearson Education, Inc. Chapter 9 Section 7 - Slide 1 AND Chapter 9 Geometry Copyright 2009 Pearson Education, Inc. Chapter 9 Section 7 - Slide 2 WHAT YOU WILL LEARN Transformational geometry,

More information

CMPSCI 187: Programming With Data Structures. Lecture #15: Thinking Recursively David Mix Barrington 10 October 2012

CMPSCI 187: Programming With Data Structures. Lecture #15: Thinking Recursively David Mix Barrington 10 October 2012 CMPSCI 187: Programming With Data Structures Lecture #15: Thinking Recursively David Mix Barrington 10 October 2012 Thinking Recursively Recursive Definitions, Algorithms, and Programs Computing Factorials

More information

public class Test { public static int i = 0;

public class Test { public static int i = 0; Lec 25 Conclusion public class Test { public static int i = 0; public static void main(string[] args) { Test t = new Test(i++); String s = "hi"; t.method1(i, s); System.out.println(i + s); } public Test(int

More information

Variable Scope. The variable scope is the range of the program where the variable can be referenced.

Variable Scope. The variable scope is the range of the program where the variable can be referenced. Variable Scope The variable scope is the range of the program where the variable can be referenced. Variables can be declared in class level, method level, and loop level. In general, a pair of curly brackets

More information

CSE 143 Lecture 11. Decimal Numbers

CSE 143 Lecture 11. Decimal Numbers CSE 143 Lecture 11 Recursive Programming slides created by Marty Stepp http://www.cs.washington.edu/143/ Decimal Numbers A visual review of decimal numbers: We get 348 by adding powers of 10 348 = 300

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

Control Flow: Loop Statements

Control Flow: Loop Statements Control Flow: Loop Statements A loop repeatedly executes a of sub-statements, called the loop body. Python provides two kinds of loop statements: a for-loop and a while-loop. This exercise gives you practice

More information

Michele Van Dyne Museum 204B CSCI 136: Fundamentals of Computer Science II, Spring

Michele Van Dyne Museum 204B  CSCI 136: Fundamentals of Computer Science II, Spring Michele Van Dyne Museum 204B mvandyne@mtech.edu http://katie.mtech.edu/classes/csci136 CSCI 136: Fundamentals of Computer Science II, Spring 2016 1 Review of Java Basics Data Types Arrays NEW: multidimensional

More information

Recursion. What is in This Chapter? Chapter 8

Recursion. What is in This Chapter? Chapter 8 Chapter 8 Recursion What is in This Chapter? This chapter explains the notion of recursion as it appears in computer science. Recursion usually involves thinking in a different manner than you may be used

More information

Department of Computer Science Yale University Office: 314 Watson Closely related to mathematical induction.

Department of Computer Science Yale University Office: 314 Watson Closely related to mathematical induction. 2/6/12 Overview CS 112 Introduction to Programming What is recursion? When one function calls itself directly or indirectly. (Spring 2012) Why learn recursion? New mode of thinking. Powerful programming

More information

CSCI 135 Exam #0 Fundamentals of Computer Science I Fall 2012

CSCI 135 Exam #0 Fundamentals of Computer Science I Fall 2012 CSCI 135 Exam #0 Fundamentals of Computer Science I Fall 2012 Name: This exam consists of 7 problems on the following 6 pages. You may use your single- side hand- written 8 ½ x 11 note sheet during the

More information

COMP-202: Foundations of Programming. Lecture 26: Review; Wrap-Up Jackie Cheung, Winter 2016

COMP-202: Foundations of Programming. Lecture 26: Review; Wrap-Up Jackie Cheung, Winter 2016 COMP-202: Foundations of Programming Lecture 26: Review; Wrap-Up Jackie Cheung, Winter 2016 Announcements Final is scheduled for Apr 21, 2pm 5pm GYM FIELD HOUSE Rows 1-21 Please submit course evaluations!

More information

CS 112 Introduction to Programming

CS 112 Introduction to Programming CS 112 Introduction to Programming (Spring 2012) Lecture #13: Recursion Zhong Shao Department of Computer Science Yale University Office: 314 Watson http://flint.cs.yale.edu/cs112 Acknowledgements: some

More information

COS 126 Exam 2 Review Part 1

COS 126 Exam 2 Review Part 1 COS 126 Exam 2 Review Part 1 Programming Exam 2 Part 1 (ADT) Q. Can you implement a simple abstract data type? Example (Fall 2016). Part 1. Implement a data type ColorHSB.java for HSB colors. This time,

More information

Odds and Ends. Think about doing research Programming grading. Assignment 3 due Tuesday

Odds and Ends. Think about doing research Programming grading. Assignment 3 due Tuesday Odds and Ends Think about doing research Programming grading Correctness, Documentation, Style, Testing Working in pairs/groups; acknowledge accordingly Assignment 3 due Tuesday ...? Questions on HW Review

More information

Warm up question. 2)Which of the following operators are defined on a half integer? Which of the following would it be useful to write as behaviors?

Warm up question. 2)Which of the following operators are defined on a half integer? Which of the following would it be useful to write as behaviors? Warm up question Suppose we have defined a class called half-integer The point of the class is to be able to store regular integers and also half integers (i.e. 3.5) 1)What would be a good way to represent

More information

CSc 2010 Principles of Computer Science, Fall 2013 Practice Problems for Midterm 3* * 3 17 % 9-20 % (26 / 7) "2"

CSc 2010 Principles of Computer Science, Fall 2013 Practice Problems for Midterm 3* * 3 17 % 9-20 % (26 / 7) 2 CSc 2010 Principles of Computer Science, Fall 2013 Practice Problems for Midterm 1. For each Java expression in the left hand column, indicate its value in the right hand column. Be sure to show a constant

More information

CSCI 136 Written Exam #1 Fundamentals of Computer Science II Spring 2012

CSCI 136 Written Exam #1 Fundamentals of Computer Science II Spring 2012 CSCI 136 Written Exam #1 Fundamentals of Computer Science II Spring 2012 Name: This exam consists of 5 problems on the following 8 pages. You may use your double- sided hand- written 8 ½ x 11 note sheet

More information

CSE 2123 Recursion. Jeremy Morris

CSE 2123 Recursion. Jeremy Morris CSE 2123 Recursion Jeremy Morris 1 Past Few Weeks For the past few weeks we have been focusing on data structures Classes & Object-oriented programming Collections Lists, Sets, Maps, etc. Now we turn our

More information

1001ICT Introduction To Programming Lecture Notes

1001ICT Introduction To Programming Lecture Notes 1001ICT Introduction To Programming Lecture Notes School of Information and Communication Technology Griffith University Semester 2, 2015 1 2 Elements of Java Java is a popular, modern, third generation

More information

Jump Statements. The keyword break and continue are often used in repetition structures to provide additional controls.

Jump Statements. The keyword break and continue are often used in repetition structures to provide additional controls. Jump Statements The keyword break and continue are often used in repetition structures to provide additional controls. break: the loop is terminated right after a break statement is executed. continue:

More information

Decision-Making and Repetition

Decision-Making and Repetition 2.2 Recursion Introduction A recursive method is a method that call itself. You may already be familiar with the factorial function (N!) in mathematics. For any positive integer N, N! is defined to be

More information

CSCI 136 Written Exam #1 Fundamentals of Computer Science II Spring 2013

CSCI 136 Written Exam #1 Fundamentals of Computer Science II Spring 2013 CSCI 136 Written Exam #1 Fundamentals of Computer Science II Spring 2013 Name: This exam consists of 5 problems on the following 6 pages. You may use your double-sided hand-written 8 ½ x 11 note sheet

More information

Recursion. Dr. Jürgen Eckerle FS Recursive Functions

Recursion. Dr. Jürgen Eckerle FS Recursive Functions Recursion Dr. Jürgen Eckerle FS 2008 Recursive Functions Recursion, in mathematics and computer science, is a method of defining functions in which the function being defined is applied within its own

More information

Jump Statements. The keyword break and continue are often used in repetition structures to provide additional controls.

Jump Statements. The keyword break and continue are often used in repetition structures to provide additional controls. Jump Statements The keyword break and continue are often used in repetition structures to provide additional controls. break: the loop is terminated right after a break statement is executed. continue:

More information

ITI Introduction to Computing II

ITI Introduction to Computing II index.pdf March 17, 2013 1 ITI 1121. Introduction to Computing II Marcel Turcotte School of Electrical Engineering and Computer Science Version of March 17, 2013 Definitions A List is a linear abstract

More information

University of Palestine. Mid Exam Total Grade: 100

University of Palestine. Mid Exam Total Grade: 100 First Question No. of Branches (5) A) Choose the correct answer: 1. If we type: system.out.println( a ); in the main() method, what will be the result? int a=12; //in the global space... void f() { int

More information

Preview from Notesale.co.uk Page 3 of 36

Preview from Notesale.co.uk Page 3 of 36 all people who know the language. Similarly, programming languages also have a vocabulary, which is referred to as the set of keywords of that language, and a grammar, which is referred to as the syntax.

More information

Summary. csci 210: Data Structures Recursion. Recursive algorithms. Recursion. Topics READING:

Summary. csci 210: Data Structures Recursion. Recursive algorithms. Recursion. Topics READING: Summary csci 210: Data Structures Recursion Topics recursion overview simple eamples Sierpinski gasket counting blobs in a grid Hanoi towers READING: LC tetbook chapter 7 Recursion Recursive algorithms

More information

csci 210: Data Structures Recursion

csci 210: Data Structures Recursion csci 210: Data Structures Recursion Summary Topics recursion overview simple eamples Sierpinski gasket counting blobs in a grid Hanoi towers READING: LC tetbook chapter 7 Recursion A method of defining

More information

Chapter 6 Recursion. The Concept of Recursion

Chapter 6 Recursion. The Concept of Recursion Data Structures for Java William H. Ford William R. Topp Chapter 6 Recursion Bret Ford 2005, Prentice Hall The Concept of Recursion An algorithm is recursive if it can be broken into smaller problems of

More information

Geometry Activity. LESSON: Fractal Snowflakes Formation GRADE: 4 OBJECTIVES:

Geometry Activity. LESSON: Fractal Snowflakes Formation GRADE: 4 OBJECTIVES: LESSON: Fractal Snowflakes Formation OBJECTIVES: GRADE: 4 Mathematics Geometry- Draw and identify lines and angles, and classify shapes by properties of their lines and angles. 4.G.A.1 Draw points, lines,

More information

Notes - Recursion. A geeky definition of recursion is as follows: Recursion see Recursion.

Notes - Recursion. A geeky definition of recursion is as follows: Recursion see Recursion. Notes - Recursion So far we have only learned how to solve problems iteratively using loops. We will now learn how to solve problems recursively by having a method call itself. A geeky definition of recursion

More information

CS 201, Fall 2016 Dec 2nd Exam 3

CS 201, Fall 2016 Dec 2nd Exam 3 CS 201, Fall 2016 Dec 2nd Exam 3 Name: Question 1. [6 points] State a big-o upper bound on the worst-case running time of the following method, where the problem size N is the number of elements in the

More information

Question 1. [5 points] What output is printed by the following program (which begins on the left and continues on the right)?

Question 1. [5 points] What output is printed by the following program (which begins on the left and continues on the right)? CS 201, Summer 2015 August 13th Final Exam Name: Question 1. [5 points] What output is printed by the following program (which begins on the left and continues on the right)? public class Q1 { public static

More information

The return Statement

The return Statement The return Statement The return statement is the end point of the method. A callee is a method invoked by a caller. The callee returns to the caller if the callee completes all the statements (w/o a return

More information

CSCI 136 Written Exam #1 Fundamentals of Computer Science II Spring 2012

CSCI 136 Written Exam #1 Fundamentals of Computer Science II Spring 2012 CSCI 136 Written Exam #1 Fundamentals of Computer Science II Spring 2012 Name: This exam consists of 5 problems on the following 8 pages. You may use your double- sided hand- written 8 ½ x 11 note sheet

More information

University of the Western Cape Department of Computer Science

University of the Western Cape Department of Computer Science University of the Western Cape Department of Computer Science Algorithms and Complexity CSC212 Paper II Final Examination 13 November 2015 Time: 90 Minutes. Marks: 100. UWC number Surname, first name Mark

More information

Koch Snowflake Go Figure The Koch Snowflake is a fractal based on a very simple rule.

Koch Snowflake Go Figure  The Koch Snowflake is a fractal based on a very simple rule. Koch Snowflake The Koch Snowflake is a fractal based on a very simple rule. The Rule: Whenever you see a straight line, like the one on the left, divide it in thirds and build an equilateral triangle (one

More information