140 likes | 154 Views
Explore recursion, iterative algorithms, and program correctness with examples like Fibonacci numbers, string operations, and set definitions. Dive into proven exercises and rules of inference for ensuring program correctness.
E N D
CMSC 203 / 0201Fall 2002 Week #7 – 7/9/11 October 2002 Prof. Marie desJardins
TOPICS • Recursion • Recursive and iterative algorithms • Program correctness
Concepts/Vocabulary • Recursive (a.k.a. inductive) function definitions • Recursively defined sets • Special sequences: • Factorial F(0)=1, F(n) = F(n-1)(n) = n! • Fibonacci numbers f0 = 0, f1 = 1, fn = fn-1 + fn-2 • Strings • *: Strings over alphabet • Empty string • String length l(s) • String concatenation
Examples • S1 = Even positive integers • 2 S1; x+2 S1 if x S1 • S2 = Even integers • 2 S2; x+2 S2 if x S2; x-2 S2 if x S2 • Prove that S1 is the set of all even positive integers • Every even positive integer is in S1… • Every member of S1 is an even positive integer…
Examples II • Exercise 3.3.5: Give a recursive definition of the sequence {an}, n = 1, 2, 3, … if • (a) an = 6n • (b) an = 2n + 1 • (c) an = 10n • (d) an = 5 • Exercise 3.3.31: When does a string belong to the set A of bit strings defined recursively by 0x1 A if x A,where is the empty string?
Examples III • Exercise 3.3.33: Use Exercise 29 [definition of wi] and mathematical induction to show that l(wi) = i l(w),where w is a string and i is a nonnegative integer. • Exercise 3.3.34: Show that (wR)I = (wi)R whenever w is a string and I is a nonnegative integer; that is, show that the ith power of the reversal of a string is the reversal of the ith power of the string.
WED 10/9RECURSIVE ALGORITHMS (3.4) ** HOMEWORK #4 DUE ** ** UNGRADED QUIZ TODAY **
Concepts / Vocabulary • Recursive algorithm • Iterative algorithm
Examples • Algorithm 7: Recursive Fibonacci • Complexity of f7 (Exercise 14), fn • Algorithm 8: Iterative Fibonacci • Complexity f7 (Exercise 14), fn • Eercise 3.4.23: Give a recursive algorithm for finding the reversal of a bit string.
Concepts / Vocabulary • Initial assertion, final assertion • Correctness, partial correctness, termination • “Partially correct with respect to initial assertion p and final assertion q” • Rules of inference • Composition rule • Conditional rules • Loop invariants
Examples • Exercise 3.5.3: Verify that the program segment x := 2 z := x + y if y > 0 then z := z + 1 else z := 0is correct with respect to the initial assertion y=3 and the final assertion z=6.
Examples II • Exercise 3.5.6: Use the rule of inference developed in Exercise 5 [if… else if … else …] to verify that the program if x < 0 then y := -2|x| / x else if x > 0 then y := 2|x| / x else if x = 0 then y := 2is correct with respect to the initial assertion T and the final assertion y=2.