Download presentation
Presentation is loading. Please wait.
Published byJoana Spurrell Modified over 9 years ago
1
CIT 590 Recursion
2
A function calling itself Factorial def factorial(n): if n == 0: return 1 return n * factorial(n-1)
3
Recursion Does solving a smaller problem help me solve a bigger one. Lists are naturally recursive A list of n elements contains in it a list of n-1 elements In many languages, lists are defined recursively in this manner A list of 1 element is a single element A list of n elements consists of the start element and a list of n- 1elements Python makes extraction of portions of the list super easy
4
List recursion examples Sum of elements of a list Finding max of a list Replicate - I want to initialize a list with repeats of a certain number All in recursionOnLists.py
5
Divide and Conquer ( a method of solving a problem) Divide the problem into smaller problem with (usually) similar structure Solve the smaller problems Now aggregate/rollup the smaller solutions to get the solution to the original problem Classic divide and conquer = mergesort Sort a list If I divide the list into 2 halves and sort each half does that help? 2 sorted lists can be merged
6
Mergesort
7
Merge Making a larger sorted array from 2 smaller sorted ones Exploit the fact that you know the relative ordering within the arrays
8
def merge(a1, a2): a3 = [] len1 = len(a1) len2 = len(a2) i=j=0 while i < len1 and j < len2: if a1[i] < a2[j]: a3.append(a1[i]) i += 1 else: a3.append(a2[j]) j += 1 # we would either have gone through # all of a1 or all of a2 by this time # just tack on the remaining stuff at the end if i < len1: a3.extend(a1[i:]) if j < len2: a3.extend(a2[j:]) return a3
9
Palindrome finding palindrome.py A string is a palindrome if and only if Its first character and its last character are the same Everything between the first and the last character is a palindrome Obviously, a single character string is a palindrome.
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.