Download presentation
Presentation is loading. Please wait.
Published byClifton Booth Modified over 9 years ago
1
Thinking Recursively xkcd #878
2
Recursion Recursive call is divider – Instructions before happen as stack is built – Instructions after happen as stack torn down
3
Fibonacci Sequence Famous recursively defined sequence
4
Naïve Implementation Direct code translation
5
Fibonacci Multiple recursive calls = combinatorial explosion:
6
Better Fibonacci Redefined Fibonacci function: – Parameters keep track of previous values – Call must include first two terms:
7
Reduced Load Parameters store old work…
8
Recursive Helpers This is ugly: Can make it a recursive helper: Call from main:
9
Moral Parameters are your main tool – Use them to "store" information – Use them to change where work happens
10
Recursive Design Recursive function design – What is base case? – What is one step? – What parameters do I need? Do I want/need extra ones to simplify problem?
11
Number of Digits How many digits does an integer have? – What is base case? – What is one step? – What parameters do I need?
12
Number of Digits How many digits does integer have? – What is base case? Anything < 10 is 1 digit – What is one step? – What parameters do I need?
13
Number of Digits How many digits does integer have? – What is base case? Anything < 10 is 1 digit – What is one step? Digits(n) = 1 + Digits(n/10) – What parameters do I need?
14
Number of Digits How many digits does integer have? – What is base case? Anything < 10 is 1 digit – What is one step? Digits(n) = 1 + Digits(n/10) – What parameters do I need? n
15
Number Of Digits Code: – Assumes number >= 0
16
Recursion With Array Want to total an array using recursion: – What is base case? Size 0 will equal 0 – What is one step? Total(size n) = nth element + Total(size n-1) – What parameters do I need? Array, size
17
Recursion With Array Want to total an array using recursion: Work backwards through array, pretending it gets smaller
18
Palindrome Is a string a Palindrome? (e.g. "radar") – What is base case? – What is one step? – What parameters do I need?
19
Palindrome Is a string a Palindrome? (e.g. "radar") – What is base case? 0 or 1 letters is a palindrome : "d" If first letter != last, is NOT a palindrome : "ben" – What is one step? – What parameters do I need?
20
Palindrome Is a string a Palindrome? (e.g. "radar") – What is base case? 0 or 1 letters is a palindrome : "d" If first letter != last, is NOT a palindrome : "ben" – What is one step? "madamImadam" Test all but first and last – What parameters do I need?
21
Palindrome Is a string a Palindrome? (e.g. "radar") – What is base case? 0 or 1 letters is a palindrome : "d" If first letter != last, is NOT a palindrome : "ben" – What is one step? "madamImadam" Test all but first and last – What parameters do I need? Current string
22
Palindrome Is a string a Palindrome? (e.g. "radar")
23
Palindrome Is a string a Palindrome? (e.g. "radar") – What is base case? 0 or 1 letters is a palindrome : "d" If first letter != last, is NOT a palindrome : "ben" – What is one step? Test all but first and last – What parameters do I need? Current string Do I want/need extra ones to simplify problem? Indexes to point to "start" and "end"
24
Palindrome Extra parameters avoid making new strings: Use as helper function:
25
Binary Search – Pick middle of remaining search space – Too high? Eliminate middle and above – Too low? Eliminate middle and below
26
Binary Search Binary search – What is base case? – What is one step? – What parameters do I need?
27
Binary Search Binary search – What is base case? – What is one step? – What parameters do I need? List, value looking for, lowest possible location, highest possible location
28
Binary Search Binary search – What is base case? If lowest possible location > highest possible location, it can't be there – What is one step? – What parameters do I need? List, value looking for, lowest possible location, highest possible location
29
Binary Search Binary search – What is base case? If lowest possible location > highest possible location, it can't be there – What is one step? Find middle If key == middle, return middle location If key < middle, highest is now middle -1 If key > middle, lowest is now middle + 1 – What parameters do I need? …
30
Binary Search Binary search – recursive helper Non-recursive starter:
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.