Recursion and Induction - - PowerPoint PPT Presentation

recursion and induction
SMART_READER_LITE
LIVE PREVIEW

Recursion and Induction - - PowerPoint PPT Presentation

CoSc 450: Programming Paradigms 02 Recursion and Induction


slide-1
SLIDE 1

CoSc 450: Programming Paradigms

Recursion and Induction

02

slide-2
SLIDE 2

CoSc 450: Programming Paradigms Recursive definition of factorial 02

  • n! =
  • 1

n = 0, n·(n−1)! n > 0.

slide-3
SLIDE 3

CoSc 450: Programming Paradigms Squaring a number recursively without multiplication. 02

slide-4
SLIDE 4

CoSc 450: Programming Paradigms Squaring a number recursively without multiplication. 02 Compute given

n2 (n − 1)2

slide-5
SLIDE 5

CoSc 450: Programming Paradigms Squaring a number recursively without multiplication. 02 Compute given

(n − 1)2 = n2 − 2n + 1 n2 = (n − 1)2 + 2n − 1 n2 (n − 1)2

slide-6
SLIDE 6

CoSc 450: Programming Paradigms Squaring a number recursively without multiplication. 02 Compute given

(n − 1)2 = n2 − 2n + 1 n2 = (n − 1)2 + 2n − 1 n2 (n − 1)2

slide-7
SLIDE 7

CoSc 450: Programming Paradigms Squaring a number recursively without multiplication. 02 Compute given

(n − 1)2 = n2 − 2n + 1 n2 = (n − 1)2 + 2n − 1 n2 (n − 1)2

slide-8
SLIDE 8

CoSc 450: Programming Paradigms Squaring a number recursively without multiplication. 02 Compute given

(n − 1)2 = n2 − 2n + 1 n2 = (n − 1)2 + 2n − 1 n2 (n − 1)2

Program this in Scheme

slide-9
SLIDE 9

CoSc 450: Programming Paradigms Prove square is correct. 02 (define square (lambda (n) (if (= n 0) (+ (square (- n 1)) (- (+ n n) 1)))))

slide-10
SLIDE 10

CoSc 450: Programming Paradigms Prove square is correct. 02 (define square (lambda (n) (if (= n 0) (+ (square (- n 1)) (- (+ n n) 1))))) The correctness proof of a recursive function is by mathematical induction.

slide-11
SLIDE 11

CoSc 450: Programming Paradigms Mathematical induction:

  • Base case corresponds to base case in code.
  • Inductive case corresponds to recursive call in

code.

  • Use code inspection to convert from Scheme to

traditional infix notation in both cases. 02

slide-12
SLIDE 12

CoSc 450: Programming Paradigms Mathematical induction:

  • Base case corresponds to base case in code.
  • Inductive case corresponds to recursive call in

code.

  • Use code inspection to convert from Scheme to

traditional infix notation in both cases. 02

slide-13
SLIDE 13

CoSc 450: Programming Paradigms Mathematical induction:

  • Base case corresponds to base case in code.
  • Inductive case corresponds to recursive call in

code.

  • Use code inspection to convert from Scheme to

traditional infix notation in both cases. 02

slide-14
SLIDE 14

CoSc 450: Programming Paradigms Mathematical induction:

  • Base case corresponds to base case in code.
  • Inductive case corresponds to recursive call in

code.

  • Use code inspection to convert from Scheme to

traditional infix notation in both cases. 02

slide-15
SLIDE 15

CoSc 450: Programming Paradigms 02

(define square (lambda (n) (if (= n 0) (+ (square (- n 1)) (- (+ n n) 1)))))

Base case Code inspection: (square 0) returns 0. Math: Therefore, correct in base case.

02 = 0

slide-16
SLIDE 16

CoSc 450: Programming Paradigms 02

(define square (lambda (n) (if (= n 0) (+ (square (- n 1)) (- (+ n n) 1)))))

Base case Code inspection: (square 0) returns 0. Math: Therefore, correct in base case.

02 = 0

slide-17
SLIDE 17

CoSc 450: Programming Paradigms 02

(define square (lambda (n) (if (= n 0) (+ (square (- n 1)) (- (+ n n) 1)))))

Base case Code inspection: (square 0) returns 0. Math: Therefore, correct in base case.

02 = 0

slide-18
SLIDE 18

CoSc 450: Programming Paradigms 02

(define square (lambda (n) (if (= n 0) (+ (square (- n 1)) (- (+ n n) 1)))))

Base case Code inspection: (square 0) returns 0. Math: Therefore, correct in base case.

02 = 0

slide-19
SLIDE 19

CoSc 450: Programming Paradigms 02

(define square (lambda (n) (if (= n 0) (+ (square (- n 1)) (- (+ n n) 1)))))

Inductive case Prove that (square n) terminates with value assuming that (square (- n 1)) terminates with value as the inductive hypothesis.

n2 (n − 1)2

slide-20
SLIDE 20

CoSc 450: Programming Paradigms 02

(define square (lambda (n) (if (= n 0) (+ (square (- n 1)) (- (+ n n) 1)))))

Inductive case Prove that (square n) terminates with value assuming that (square (- n 1)) terminates with value as the inductive hypothesis.

n2 (n − 1)2

slide-21
SLIDE 21

CoSc 450: Programming Paradigms 02

(define square (lambda (n) (if (= n 0) (+ (square (- n 1)) (- (+ n n) 1)))))

Inductive case Prove that (square n) terminates with value assuming that (square (- n 1)) terminates with value as the inductive hypothesis.

n2 (n − 1)2

slide-22
SLIDE 22

CoSc 450: Programming Paradigms 02

(define square (lambda (n) (if (= n 0) (+ (square (- n 1)) (- (+ n n) 1)))))

Inductive case

  • =

⟨⟩

+(n+n)−1

= ⟨⟩ (n−1)2 +(n+n)−1 = ⟨⟩ n2 −2n+1+2n−1 = ⟨⟩ n2

slide-23
SLIDE 23

CoSc 450: Programming Paradigms 02

(define square (lambda (n) (if (= n 0) (+ (square (- n 1)) (- (+ n n) 1)))))

Inductive case

  • =

⟨⟩

+(n+n)−1

= ⟨⟩ (n−1)2 +(n+n)−1 = ⟨⟩ n2 −2n+1+2n−1 = ⟨⟩ n2

slide-24
SLIDE 24

CoSc 450: Programming Paradigms 02

(define square (lambda (n) (if (= n 0) (+ (square (- n 1)) (- (+ n n) 1)))))

Inductive case

  • =

⟨⟩

+(n+n)−1

= ⟨⟩ (n−1)2 +(n+n)−1 = ⟨⟩ n2 −2n+1+2n−1 = ⟨⟩ n2

slide-25
SLIDE 25

CoSc 450: Programming Paradigms 02

(define square (lambda (n) (if (= n 0) (+ (square (- n 1)) (- (+ n n) 1)))))

Inductive case

  • =

⟨⟩

+(n+n)−1

= ⟨⟩ (n−1)2 +(n+n)−1 = ⟨⟩ n2 −2n+1+2n−1 = ⟨⟩ n2

slide-26
SLIDE 26

CoSc 450: Programming Paradigms 02

(define square (lambda (n) (if (= n 0) (+ (square (- n 1)) (- (+ n n) 1)))))

Inductive case

  • =

⟨⟩

+(n+n)−1

= ⟨⟩ (n−1)2 +(n+n)−1 = ⟨⟩ n2 −2n+1+2n−1 = ⟨⟩ n2

slide-27
SLIDE 27

CoSc 450: Programming Paradigms 02

(define square (lambda (n) (if (= n 0) (+ (square (- n 1)) (- (+ n n) 1)))))

Inductive case

  • =

⟨⟩

+(n+n)−1

= ⟨⟩ (n−1)2 +(n+n)−1 = ⟨⟩ n2 −2n+1+2n−1 = ⟨⟩ n2

slide-28
SLIDE 28

CoSc 450: Programming Paradigms 02

(define square (lambda (n) (if (= n 0) (+ (square (- n 1)) (- (+ n n) 1)))))

Inductive case

  • =

⟨⟩

+(n+n)−1

= ⟨⟩ (n−1)2 +(n+n)−1 = ⟨⟩ n2 −2n+1+2n−1 = ⟨⟩ n2

slide-29
SLIDE 29

CoSc 450: Programming Paradigms 02

(define square (lambda (n) (if (= n 0) (+ (square (- n 1)) (- (+ n n) 1)))))

Inductive case

  • =

⟨⟩

+(n+n)−1

= ⟨⟩ (n−1)2 +(n+n)−1 = ⟨⟩ n2 −2n+1+2n−1 = ⟨⟩ n2

slide-30
SLIDE 30

CoSc 450: Programming Paradigms 02

(define square (lambda (n) (if (= n 0) (+ (square (- n 1)) (- (+ n n) 1)))))

Inductive case

  • =

⟨⟩

+(n+n)−1

= ⟨⟩ (n−1)2 +(n+n)−1 = ⟨⟩ n2 −2n+1+2n−1 = ⟨⟩ n2

slide-31
SLIDE 31

CoSc 450: Programming Paradigms 02

(define square (lambda (n) (if (= n 0) (+ (square (- n 1)) (- (+ n n) 1)))))

Inductive case

  • =

⟨⟩

+(n+n)−1

= ⟨⟩ (n−1)2 +(n+n)−1 = ⟨⟩ n2 −2n+1+2n−1 = ⟨⟩ n2

slide-32
SLIDE 32

CoSc 450: Programming Paradigms 02 The cond function

(cond ((condition1) expr1) ((condition2) expr2) ((condition3) expr3) (else expr4))

slide-33
SLIDE 33

CoSc 450: Programming Paradigms 02 The sum-of-first function

slide-34
SLIDE 34

CoSc 450: Programming Paradigms 02 The sum-of-first function

> (sum-of-first 4) 10 > (sum-of-first 5) 15

slide-35
SLIDE 35

CoSc 450: Programming Paradigms 02 The sum-of-first function

> (sum-of-first 4) 10 > (sum-of-first 5) 15 (sum-of-first n) returns 1 + 2 + · · · + n

slide-36
SLIDE 36

CoSc 450: Programming Paradigms 02 The num-digits function

slide-37
SLIDE 37

CoSc 450: Programming Paradigms 02 The num-digits function

> (num-digits 59274) 5 > (num-digits 81) 2

slide-38
SLIDE 38

CoSc 450: Programming Paradigms 02 The num-digits function

> (num-digits 59274) 5 > (num-digits 81) 2 (num-digits n) returns

the number of digits in n