170 likes | 180 Views
Lecture 3.3: Recursion. CS 250, Discrete Structures, Fall 2015 Nitesh Saxena. Adopted from previous lectures by Cinda Heeren, Zeph Grunschlag. Course Admin (10/27). HW3 will be posted by end of this week Covers “Induction and Recursion” (Chapter 5) Due on Thu, Nov 17
E N D
Lecture 3.3: Recursion CS 250, Discrete Structures, Fall 2015 Nitesh Saxena Adopted from previous lectures by Cinda Heeren, Zeph Grunschlag
Course Admin (10/27) • HW3 will be posted by end of this week • Covers “Induction and Recursion” (Chapter 5) • Due on Thu, Nov 17 • Mid Term 2: Nov 10 (Tues) • Covers “Induction and Recursion” (Chapter 5) • Review Nov 5 (Thu) Lecture 3.3 -- Recursion
Outline • Some practice: strong induction • Recursion • Recursive Functions and Definitions Lecture 3.3 -- Recursion
Strong Induction Example (Rosen) • Prove that every integer > 1 can be expressed as a product of prime numbers [This is referred to as the fundamental theorem of arithmetic] Lecture 3.3 -- Recursion
Recursively Defined Sequences Often it is difficult to express the members of an object or numerical sequence explicitly. EG: The Fibonacci sequence: {fn } = 0,1,1,2,3,5,8,13,21,34,55,… There may, however, be some “local” connections that can give rise to a recursive definition –a formula that expresses higher terms in the sequence, in terms of lower terms. EG: Recursive definition for {fn }: INITIALIZATION: f0= 0, f1 = 1 RECURSION: fn= fn-1+fn-2 for n > 1. Lecture 3.3 -- Recursion
Recursive Functions It is possible to think of any function with domain N as a sequence of numbers, and vice-versa. Simply set: fn=f (n) For example, our Fibonacci sequence becomes the Fibonacci function as follows: f (0) = 0, f (1) = 1, f (2) = 1, f (3) = 2,… Such functions can then be defined recursively by using recursive sequence definition. EG: INITIALIZATION: f (0) = 0, f (1)= 1 RECURSION: f (n) = f (n -1) +f (n -2),for n > 1. Lecture 3.3 -- Recursion
Recursive Functions: Factorial A simple example of a recursively defined function is the factorial function: n! = 1· 2· 3· 4 ···(n –2)·(n –1)·n i.e., the product of the first n positive numbers (by convention, the product of nothing is 1, so that 0! = 1). Q: Find a recursive definition for n! Lecture 3.3 -- Recursion
Recursive Functions: Factorial A:INITIALIZATION: 0!= 1 RECURSION: n != n ·(n -1)! To compute the value of a recursive function, e.g. 5!, one plugs into the recursive definition obtaining expressions involving lower and lower values of the function, until arriving at the base case. EG: 5! = Lecture 3.3 -- Recursion
Recursive Functions: Factorial A:INITIALIZATION: 0!= 1 RECURSION: n != n ·(n -1)! To compute the value of a recursive function, e.g. 5!, one plugs into the recursive definition obtaining expressions involving lower and lower values of the function, until arriving at the base case. EG: 5! = 5 · 4! = 5 · 4 · 3! = 5 · 4 · 3 · 2! = 5 · 4 · 3 · 2 · 1! = 5 · 4 · 3 · 2 · 1 · 0! = 120 Lecture 3.3 -- Recursion
Recursive Functions: gcd Euclid’s algorithm makes use of the fact that gcd(x,y ) = gcd(y, xmod y) (here we assume that x > 0) Lecture 3.3 -- Recursion
Recursive Definitions: Mathematical Notation Definition of summation notation: There is also a general product notation : Lecture 3.3 -- Recursion
Recursive Definitions: Mathematical Notation Q: Find a recursive definition for the product notation Lecture 3.3 -- Recursion
Recursive Definitions: Mathematical Notation A: This is very similar to definition of summation notation. Note: Initialization is argument for “product of nothing” being 1, not 0. Lecture 3.3 -- Recursion
Recursive Case Base Case Recursively Defined Sets Our examples so far have been inductively defined functions. Sets can be defined inductively, too. Give an inductive definition of S = {x: x is a multiple of 3} 3 S x,y S x + y S Lecture 3.3 -- Recursion
Countably infinite Strings: Recursive Definition Let be a finite set called an alphabet. The set of strings on , denoted * is defined as: • *, where denotes the null or empty string. • If x , and w *, then wx *, where wx is the concatenation of string w with symbol x. Example: Let = {a, b, c}. Then * = {, a, b, c, aa, ab, ac, ba, bb, bc, ca, cb, cc, aaa, aab,…} How big is *? Lecture 3.3 -- Recursion
Length of a String: Recursive Definition Recursive definition of the length of strings (the length of string w is |w|.): • || = 0 • If x , and w *, then |wx| = |w| + 1 Lecture 3.3 -- Recursion
Today’s Reading • Rosen 5.3 Lecture 3.3 -- Recursion