19
10/04/2011 Lecture 3.3 -- Recursion 1 Lecture 3.3: Recursion CS 250, Discrete Structures, Fall 2011 Nitesh Saxena *Adopted from previous lectures by Cinda Heeren, Zeph Grunschlag

Lecture 3.3: Recursion

Embed Size (px)

DESCRIPTION

Lecture 3.3: Recursion. CS 250, Discrete Structures, Fall 2011 Nitesh Saxena. * Adopted from previous lectures by Cinda Heeren, Zeph Grunschlag. Course Admin. Mid-Term 1 Graded Scores posted To be distributed at the end of today’s lecture - PowerPoint PPT Presentation

Citation preview

Page 1: Lecture 3.3: Recursion

10/04/2011 Lecture 3.3 -- Recursion 1

Lecture 3.3: Recursion

CS 250, Discrete Structures, Fall 2011

Nitesh Saxena *Adopted from previous lectures by Cinda Heeren, Zeph Grunschlag

Page 2: Lecture 3.3: Recursion

10/04/2011 Lecture 3.3 -- Recursion 2

Course Admin Mid-Term 1 Graded

Scores posted To be distributed at the end of today’s

lecture Again, take a careful look, and in case of

any questions, please contact the TA HW2

Being graded Expected to have the results by coming

weekend Solution to be posted soon

Page 3: Lecture 3.3: Recursion

10/04/2011 Lecture 3.3 -- Recursion 3

Course Admin Overall grades

Recall: they will be relative, based on overall performance of the class

Further improvement possible in the upcoming HWs and two exams

Please continue to work hard. It will pay off. Don’t hesitate to ask for extra help

Page 4: Lecture 3.3: Recursion

10/04/2011 Lecture 3.3 -- Recursion 4

Outline

Some practice: strong induction Recursion Recursive Functions and Definitions

Page 5: Lecture 3.3: Recursion

10/04/2011 Lecture 3.3 -- Recursion 5

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]

Page 6: Lecture 3.3: Recursion

10/04/2011 Lecture 3.3 -- Recursion 6

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.

Page 7: Lecture 3.3: Recursion

10/04/2011 Lecture 3.3 -- Recursion 7

Recursive FunctionsIt 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.

Page 8: Lecture 3.3: Recursion

10/04/2011 Lecture 3.3 -- Recursion 8

Recursive Functions: Factorial

A simple example of a recursively defined function is the factorial function:

n! = 1· 2· 3· 4 ···(n –2)·(n –1)·ni.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!

Page 9: Lecture 3.3: Recursion

10/04/2011 Lecture 3.3 -- Recursion 9

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! =

Page 10: Lecture 3.3: Recursion

10/04/2011 Lecture 3.3 -- Recursion 10

Recursive Functions: FactorialA: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

Page 11: Lecture 3.3: Recursion

10/04/2011 Lecture 3.3 -- Recursion 11

Recursive Functions: gcdEuclid’s algorithm makes use of the fact that gcd(x,y ) = gcd(y, x mod y)

(here we assume that x > 0)

otherwise

if

),mod,gcd(

0 ,),gcd(

yxy

yxyx

Page 12: Lecture 3.3: Recursion

10/04/2011 Lecture 3.3 -- Recursion 12

Recursive Definitions: Mathematical Notation

Definition of summation notation:

There is also a general product notation :

0 ,

0 ,01

11 naa

n

an

n

ii

n

ii if

if

nn

n

ii aaaaa

121

1

Page 13: Lecture 3.3: Recursion

10/04/2011 Lecture 3.3 -- Recursion 13

Recursive Definitions: Mathematical Notation

Q: Find a recursive definition for the product notation

n

iia

1

Page 14: Lecture 3.3: Recursion

10/04/2011 Lecture 3.3 -- Recursion 14

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.

0 ,

0 ,11

11 naa

n

an

n

ii

n

ii if

if

Page 15: Lecture 3.3: Recursion

10/04/2011 Lecture 3.3 -- Recursion 15

Recursively Defined Sets

Our examples so far have been inductively defined functions.

Sets can be defined inductively, too.

Recursive Case

Base Case

Give an inductive definition of S = {x: x is a multiple of 3}

1. 3 S2. x,y S x + y S

Page 16: Lecture 3.3: Recursion

10/04/2011 Lecture 3.3 -- Recursion 16

Strings

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.

Countably infinite

Example: Let = {a, b, c}. Then * = {, a, b, c, aa, ab, ac, ba, bb, bc, ca, cb, cc, aaa, aab,

…}

How big is *?

Page 17: Lecture 3.3: Recursion

10/04/2011 Lecture 3.3 -- Recursion 17

Strings

Recursive definition of the length of strings (the length of string w is |w|.):

|| = 0 If x , and w *, then |wx|

= |w| + 1

Page 18: Lecture 3.3: Recursion

10/04/2011 Lecture 3.3 -- Recursion 18

Well Formed Formulae (WFF) for Propositions

A set of wff is defined as follows:

1. T is a wff2. F is a wff3. p is a wff for any propositional variable p4. If p is a wff, then (p) is a wff5. If p and q are wffs, then (p q), is a wff6. If p and q are wffs, then (p q) is a wff

This just describes fully parenthesized propositions.

For example, a statement like ((r) (p r)) can be proven to be a wff by arguing that (r) and (p r) are wffs by recursion and then applying rule 5.

Page 19: Lecture 3.3: Recursion

10/04/2011 Lecture 3.3 -- Recursion 19

Today’s Reading Rosen 5.3