1 / 51

Discrete Mathematics Recursion and Sequences

Discrete Mathematics Recursion and Sequences. Recursion. Recursion is a powerful computer programming technique in which a procedure (e.g. a subroutine) is defined so that it calls itself . Note that recursion is not available in all computer languages

kermit-ruiz
Download Presentation

Discrete Mathematics Recursion and Sequences

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Discrete MathematicsRecursion and Sequences

  2. Recursion Recursion is a powerful computer programming technique in which a procedure (e.g. a subroutine) is defined so that it calls itself. Note that recursion is not available in all computer languages To introduce recursion, look at sequences of numbers.

  3. Definitions • Sequence: is just an infinite list of numbers in a particular order • Like a set, but: • Elements can be duplicated • Elements are ordered • A sequence is a function from a subset of Z to a set S • an is a term in the sequence • {an} means the entire sequence • The same notation as sets!

  4. Sequence examples • an = 3n • The terms in the sequence are a1, a2, a3, … • The sequence {an} is { 3, 6, 9, 12, … } • Arithmetic Progression • a, a+d, a+2d, …, a+nd, … • an = a + (n-1) d • bn = 2n • The terms in the sequence are b1, b2, b3, … • The sequence {bn} is { 2, 4, 8, 16, 32, … } • Geometric Progression • a, ar, ar2, ar3, …, arn-1, … • an = arn-1

  5. Determining the sequence formula • Given values in a sequence, how do you determine the formula? • Steps to consider: • Is it an arithmetic progression (each term a constant amount from the last)? • Is it a geometric progression (each term a factor of the previous term)? • Does the sequence it repeat (or cycle)? • Does the sequence combine previous terms? • Are there runs of the same value?

  6. Determining the sequence formula • 1, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, … • The sequence alternates 1’s and 0’s, increasing the number of 1’s and 0’s each time • 1, 2, 2, 3, 4, 4, 5, 6, 6, 7, 8, 8, … • This sequence increases by one, but repeats all even numbers once • 1, 0, 2, 0, 4, 0, 8, 0, 16, 0, … • The non-0 numbers are a geometric sequence (2n) interspersed with zeros • 3, 6, 12, 24, 48, 96, 192, … • Each term is twice the previous: geometric progression • an = 3*2n-1

  7. Non-Recursive Definition of a Sequence • 15, 8, 1, -6, -13, -20, -27, … • Each term is 7 less than the previous term • an = 22 - 7n • 3, 5, 8, 12, 17, 23, 30, 38, 47, … • The difference between successive terms increases by one each time • a1 = 3, an = an-1 + n • an = n(n+1)/2 + 2 • 2, 16, 54, 128, 250, 432, 686, … • Each term is twice the cube of n • an = 2*n3 • 2, 3, 7, 25, 121, 721, 5041, 40321 • Each successive term is about n times the previous • an = n! + 1 When a sequence is defined by a rule (may be arithmetic or geometric progression) in this way, we say the definition is non-recursive.

  8. What is an algorithm? • An algorithm is “a finite set of precise instructions for performing a computation or for solving a problem” • A program is one type of algorithm • Directions to somebody’s house is an algorithm • A recipe for cooking a cake is an algorithm • The steps to compute the cosine of 90° is an algorithm

  9. Some algorithms are harder than others • Some algorithms are easy • Finding the largest (or smallest) value in a list • Finding a specific value in a list • Some algorithms are a bit harder • Sorting a list • Some algorithms are very hard • Finding the shortest path between Edirneand Diyarbakır • Some algorithms are essentially impossible • Factoring large composite numbers

  10. Algorithms to Generate Sequences A non-recursive definition can be used in algorithm to obtain the first m terms of a sequence. The algorithm that generates the first m terms of the sequence 15, 8, 1, -6, -13, -20, -27, … 1. Input m 2. For n = 1 tomdo 2.1 t:=22-7n 2.2 output t This algorithm uses the non-recursive definition an = 22 - 7n Note that the algortihm is written in pseudocode, a form of structured English which can be easily converted to code in the chosen programming language.

  11. Algorithms to Generate Sequences A different algorithm to generate first m terms of 15, 8, 1, -6, -13, -20, -27, … 1. Inputm 2. t:=15 3. Output t 4. For n = 2 tomdo 4.1. t:=t – 7 4.2. Output t A trace of this algorithm for m = 5 shows that it does, indeed, output the first 5 terms of the sequence. Recursive definition of this sequence is: a1 = 15 (base) an = an-1 – 7 (n > 1) It is recursive, because the formula an contains the previous term an, so the formula calls itself.

  12. More Examples Find the recursive and non-recursive definitions for the sequence 1, 3, 7, 15, 31, 63, 127, … The non-recursive formula is more difficult to find than the recursive formula, but it is easier to use once it has been found – this is fairly typical. Non-recursive formula: an = 2 n - 1 Recursive formula a1 = 1, an = 2an-1 + 1 (n > 1) This algorithm produces the above sequence. It is not a recursive algorithm. Instead it is an iterative algorithm. 1. Inputm 2. t:=1 3. Output t 4. For n = 1 tomdo 4.1 t:= 2t + 1 4.2 Output t The word “iterative” means to do something repeatedly, as in a For-do loop

  13. Fibonacci Sequence This sequence was posed by the Italian mathematician Leonardo Pisano in 1202. A man put a pair of newborn rabbits in a place surrounded on all sides by a wall. How many pairs of rabbits will be present at later times if it is supposed that every month each pair begets a new pair which from the second month on becomes productive? The resulting sequence is 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, …

  14. Fibonacci Sequence This is known as the Fibonacci sequence which was the second name for Leonardo. The recursive definition of this sequence is a1 = 1, a2 = 1, an = an-1 + an-2 (n>2) It’s not straight forward to obtain a non-recursive definition of the Fibonacci sequence In fact, the formula is

  15. The Collatz Sequence Let a1 = any chosen positive integer, and for n>1, define an by an = 3an-1 +1 if an-1 is odd an = 0.5an-1 if an-1 is even This is called the Collatz sequence (after Lothar Collatz (1910-90), a German mathematician) It is also known as the 3X + 1 sequence e.g. İf we choose a1 = 3, then the sequence is 3, 10, 5, 16, 8, 4, 2, 1, 4, 2, 1, 4, 2, 1, … In fact for any starting number, if the sequence ever reaches 1, it will cycle through 1, 4 and 2. İf we choose a1 = 13, then the sequence is 13, 40, 20, 10, 5, 16, 8, 4, 2, 1, 4, 2, 1, 4, 2, 1, … In all examples, the Collatz sequence eventually reached the value of 1.

  16. Recursive FunctionsFactorial 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!

  17. Recursive FunctionsFactorial 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! =

  18. Recursive FunctionsFactorial 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!

  19. Recursive FunctionsFactorial 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!

  20. Recursive FunctionsFactorial 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!

  21. Recursive FunctionsFactorial 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!

  22. Recursive FunctionsFactorial 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!

  23. An Iterative Algorithm for n! 1. Input n 2. t:=1 3. For i = 1 to n do 3.1 t:=i x t 4. Output t This is an iterative algorithm because of the For-do loop, but it is not recursive (the algorithm does not call itself) Function factorial (n) 1. t:=1 2. For i = 1 to n do 2.1 t:= i x t 3. factorial:=t

  24. A Recursive Algorithm for n! The function algorithm for n! İs an iterative algorithm, based on the recursive definition 0!= 1 n != n ·(n -1)! (n>0) Function factorial (n) 1. If n = 0 then 1.1. factorial:=1 else 1.2. factorial:= n x factorial(n-1) This is now a genuine recursive algorithm, because it contains a call to itself.

  25. How does the Algorithm work? Function factorial (n) 1. If n = 0 then 1.1. factorial:=1 else 1.2. factorial:= n x factorial(n-1) Compute 5!

  26. Function factorial (n) 1. If n = 0 then 1.1. factorial:=1 else 1.2. factorial:= n x factorial(n-1) How does the Algorithm work?

  27. Function factorial (n) 1. If n = 0 then 1.1. factorial:=1 else 1.2. factorial:= n x factorial(n-1) How does the Algorithm work?

  28. Function factorial (n) 1. If n = 0 then 1.1. factorial:=1 else 1.2. factorial:= n x factorial(n-1) How does the Algorithm work?

  29. Function factorial (n) 1. If n = 0 then 1.1. factorial:=1 else 1.2. factorial:= n x factorial(n-1) How does the Algorithm work?

  30. Function factorial (n) 1. If n = 0 then 1.1. factorial:=1 else 1.2. factorial:= n x factorial(n-1) How does the Algorithm work?

  31. Function factorial (n) 1. If n = 0 then 1.1. factorial:=1 else 1.2. factorial:= n x factorial(n-1) How does the Algorithm work?

  32. Function factorial (n) 1. If n = 0 then 1.1. factorial:=1 else 1.2. factorial:= n x factorial(n-1) How does the Algorithm work?

  33. Function factorial (n) 1. If n = 0 then 1.1. factorial:=1 else 1.2. factorial:= n x factorial(n-1) How does the Algorithm work?

  34. Function factorial (n) 1. If n = 0 then 1.1. factorial:=1 else 1.2. factorial:= n x factorial(n-1) How does the Algorithm work?

  35. Function factorial (n) 1. If n = 0 then 1.1. factorial:=1 else 1.2. factorial:= n x factorial(n-1) How does the Algorithm work?

  36. Function factorial (n) 1. If n = 0 then 1.1. factorial:=1 else 1.2. factorial:= n x factorial(n-1) How does the Algorithm work?

  37. Function factorial (n) 1. If n = 0 then 1.1. factorial:=1 else 1.2. factorial:= n x factorial(n-1) How does the Algorithm work? Return 5! = 120

  38. Another Recursive Algorithm Example: The sequence 2, 4, 9, 23, 64, 186, … can be defined recursively by: a1 = 2 an = 3an-1 – n (n>1) Write a recursive algorithm for this sequence. Solution: Function t(n) 1. If n = 1 then 1.1. t:=2 else 1.2. t:= 3t(n-1) - n

  39. To Output the First m terms A way to output the 1st m terms of this sequence is to use an algorithm that calls the function: 1. Input m 2. For n = 1 to m do 2.1 x:= t(n) 2.2 Output x Although this works, it is not very efficient e.g. If m = 4, t(1) would be calculated four times, t(2) three times, and so on. This is because our algorithm don’t provide a means storing results that can be used in subsequent passes through the For-do loop.

  40. An Efficient Approach Using the algorithm we already have, output the first m-1 terms, omit this step if m = 1 Evaluate t(m), the mth term of the sequence Output the value of t(m) output_sequence (m) 1. If m = 1 then 1.1 t:= 2 else 1.2 output_sequence(m-1) 1.3 t:= 3t – m 2. Output t

  41. How does the Algorithm work? output_sequence (m) 1. If m = 1 then 1.1 t:= 2 else 1.2 output_sequence(m-1) 1.3 t:= 3t – m 2. Output t Output the first 5 terms

  42. How does the Algorithm work? output_sequence (m) 1. If m = 1 then 1.1 t:= 2 else 1.2 output_sequence(m-1) 1.3 t:= 3t – m 2. Output t

  43. How does the Algorithm work? output_sequence (m) 1. If m = 1 then 1.1 t:= 2 else 1.2 output_sequence(m-1) 1.3 t:= 3t – m 2. Output t

  44. How does the Algorithm work? output_sequence (m) 1. If m = 1 then 1.1 t:= 2 else 1.2 output_sequence(m-1) 1.3 t:= 3t – m 2. Output t

  45. How does the Algorithm work? output_sequence (m) 1. If m = 1 then 1.1 t:= 2 else 1.2 output_sequence(m-1) 1.3 t:= 3t – m 2. Output t

  46. How does the Algorithm work? output_sequence (m) 1. If m = 1 then 1.1 t:= 2 else 1.2 output_sequence(m-1) 1.3 t:= 3t – m 2. Output t

  47. How does the Algorithm work? output_sequence (m) 1. If m = 1 then 1.1 t:= 2 else 1.2 output_sequence(m-1) 1.3 t:= 3t – m 2. Output t 2

  48. How does the Algorithm work? output_sequence (m) 1. If m = 1 then 1.1 t:= 2 else 1.2 output_sequence(m-1) 1.3 t:= 3t – m 2. Output t 2 4

  49. How does the Algorithm work? output_sequence (m) 1. If m = 1 then 1.1 t:= 2 else 1.2 output_sequence(m-1) 1.3 t:= 3t – m 2. Output t 2 4 9

  50. How does the Algorithm work? output_sequence (m) 1. If m = 1 then 1.1 t:= 2 else 1.2 output_sequence(m-1) 1.3 t:= 3t – m 2. Output t 2 4 9 23

More Related