Logic, Algorithms and Data Structures Recursion and Stacks. By: Jonas Öberg
|
|
- Gavin Lester
- 5 years ago
- Views:
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! =
Mathematical Recursion 11. Recursion Mathematical Recursion, Termination, Call Stack, Examples, Recursion vs. Iteration, Lindenmayer Systems Many mathematical functions can be naturally defined recursively.
More information12. 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 informationUnit 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 informationExperiment: 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 informationRecursive 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 information2.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 informationFractals 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 information2.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 informationBig 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 informationRecursion. 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 informationRecursion. 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 informationRecursion 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 informationCMSC 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 informationCSC 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 informationEXERCISES 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 informationMidterm 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 informationComputer 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 informationTotal 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 informationData 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 informationL-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 information8/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 informationCSCI 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 informationTotal 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 informationq 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 informationq 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 informationCIS 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 informationLists. 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.
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 informationCmpSci 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 informationMore 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 informationcs 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 informationC22a: 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 informationDM550 / 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 informationRecursive 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 informationCS 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 informationCS18000: 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 information26 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 informationLecture 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 informationGrade 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 informationPLT 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 informationCS18000: 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 informationFractals & 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 informationDM537 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 information2.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 informationCS/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 information12.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 informationDM503 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 information2.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 informationLinked 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 informationRecursion 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 information2.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 informationCSC 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 informationRound 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 informationNested 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 informationOverview. 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 informationMethod 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 informationReduction & Recursion Overview
Reduction & Recursion Overview Reduction definition Reduction techniques Recursion definition Recursive thinking (Many) recursion examples Indirect recursion Runtime stack Factorial isnumericstring add
More informationRecursion. 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 informationRecursion. 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 informationObjects 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 informationCSC 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 informationCopyright 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 informationCMPSCI 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 informationpublic 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 informationVariable 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 informationCSE 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 informationChapter 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 informationControl 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 informationMichele 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 informationRecursion. 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 informationDepartment 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 informationCSCI 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 informationCOMP-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 informationCS 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 informationCOS 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 informationOdds 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 informationWarm 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 informationCSc 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 informationCSCI 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 informationCSE 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 information1001ICT 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 informationJump 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 informationDecision-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 informationCSCI 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 informationRecursion. 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 informationJump 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 informationITI 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 informationUniversity 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 informationPreview 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 informationSummary. 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 informationcsci 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 informationChapter 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 informationGeometry 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 informationNotes - 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 informationCS 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 informationQuestion 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 informationThe 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 informationCSCI 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 informationUniversity 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 informationKoch 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