440 likes | 626 Views
APS105. Recursion. Recursion. A function is allowed to call itself! Example: . A function calling itself is called “recursion” Such a function is called a “recursive” function Why would you want to do this?. Recursion: Motivation. Sometimes a prob has self-similar sub-probs
E N D
APS105 Recursion
Recursion • A function is allowed to call itself! • Example: . • A function calling itself is called “recursion” • Such a function is called a “recursive” function • Why would you want to do this?
Recursion: Motivation • Sometimes a prob has self-similar sub-probs • E.g., problems-within-a-problem • “inner” problems have same description as outer • but inner problems are smaller in some way • inner problems themselves have inner problems • Recursion continues until: • some small indivisible problem reached • or some other stopping condition is reached • called the “base case” or “terminating case” • Note: • sometimes recursion can be expressed as a loop • or vice-versa
Recursion: Walking Across the Room • Loop-based solution basic idea: • while not at the wall take another step • Recursive solution basic idea: .
Recursion: Cake Cutting • Cut a jelly-roll into equal parts < 100g each .
Reading/Evaluating Expressions • Recall: BEDMAS: order of evaluation • Brackets • Exponents • Division & Multiplication • Addition & Subtraction • Apply BEDMAS to every expression • and to every sub-expression within the expression
Example: Evaluating Expressions • BEDMAS • Example: .
Other Examples • Finding your way out of a maze • Fractals • Solving a sudoku
Recursive Math Functions • Example: f(3): .
Print a Triangle of Stars **** *** ** * .
Print an Inverted Triangle of Stars * ** *** **** .
Recursion and Strings • Can think of strings using a recursive definition • Example: one of these recursive definitions: • a string is a character followed by a string • a string is a character preceded by a string • a string is two characters with a string in the middle
Palindromes • Palindrome: • a string that is the same backwards and forwards • Examples: racecar, level, civic, madam, noon • Write a function to determine if a palindrome
GCD Algorithm • GCD of two numbers is • if the numbers are the same: • the GCD is either number • if the numbers are different: • the GCD of the smaller of the two and the difference between the two • Example: GCD(20,8) = GCD(8,12) = GCD(8,4) = GCD(4,4) The GCD is 4
Determining Powers • Computing powers the easy (but slow) way: X5 = X*X*X*X*X X20 = X*X*X*X*X*X*X*X*X*X.... • The more efficient way: .
Ackermann’s Function and Maze Routing
Maze Routing • Basic idea (see Ch8) .
Towers of Hanoi • Move all disks to another rod, but: • Only one disk may be moved at a time. • No disk may be placed on a smaller disk. Initial: Goal:
Towers of Hanoi • Write a program that prints a solution • assume rods 1,2,3 • assume some number of discs given by height
Towers Algorithm • Legend: • Monks found 64 disk tower-game • Universe will end when they finish the game • number of moves is 2n-1 • for n=3: 7 moves • for n=20: 1,048,575 moves • for n=64: 1.8*1019 moves • == 585billion years at one move per second • note: 14billion years since big bang • The algorithm is “exponential” • roughly Xn moves where n is size of problem • exponential algorithms are impractical!