Recursion. Sum a list of numbers Iterative def sum(L): total = 0 for i in L: total += i return total...
-
date post
22-Dec-2015 -
Category
Documents
-
view
221 -
download
0
Transcript of Recursion. Sum a list of numbers Iterative def sum(L): total = 0 for i in L: total += i return total...
![Page 1: Recursion. Sum a list of numbers Iterative def sum(L): total = 0 for i in L: total += i return total Recursive def sum(L): if len(L) == 0: return 0 else:](https://reader030.fdocuments.us/reader030/viewer/2022032704/56649d7f5503460f94a62286/html5/thumbnails/1.jpg)
Recursion
![Page 2: Recursion. Sum a list of numbers Iterative def sum(L): total = 0 for i in L: total += i return total Recursive def sum(L): if len(L) == 0: return 0 else:](https://reader030.fdocuments.us/reader030/viewer/2022032704/56649d7f5503460f94a62286/html5/thumbnails/2.jpg)
Sum a list of numbers
Iterativedef sum(L): total = 0 for i in L: total += ireturn total
Recursivedef sum(L): if len(L) == 0: return 0 else: return L[0]+
sum(L[1:])
![Page 3: Recursion. Sum a list of numbers Iterative def sum(L): total = 0 for i in L: total += i return total Recursive def sum(L): if len(L) == 0: return 0 else:](https://reader030.fdocuments.us/reader030/viewer/2022032704/56649d7f5503460f94a62286/html5/thumbnails/3.jpg)
How iteration works
def sum(L): total = 0 for i in L: total += ireturn total
• sum([4,5,6]) total = 0i = 4total = 0 + 4 = 4i = 5total = 4 + 5 = 9i = 6total = 9 + 6 =
15• 15
![Page 4: Recursion. Sum a list of numbers Iterative def sum(L): total = 0 for i in L: total += i return total Recursive def sum(L): if len(L) == 0: return 0 else:](https://reader030.fdocuments.us/reader030/viewer/2022032704/56649d7f5503460f94a62286/html5/thumbnails/4.jpg)
How recursion works
def sum(L): if len(L) == 0: return 0 else: return L[0]+
sum(L[1:]
•sum([4,5,6]) •4+sum([5,6]) •5+sum([6])
•6+sum([ ]) •0 •6 + 0 = 6 •5 + 6 = 11 •4 + 11 = 15•15
![Page 5: Recursion. Sum a list of numbers Iterative def sum(L): total = 0 for i in L: total += i return total Recursive def sum(L): if len(L) == 0: return 0 else:](https://reader030.fdocuments.us/reader030/viewer/2022032704/56649d7f5503460f94a62286/html5/thumbnails/5.jpg)
Side by side
sum([4,5,6]) total = 0i = 4total = 0 + 4 = 4i = 5total = 4 + 5 = 9i = 6total = 9 + 6 =
15• 15
•sum([4,5,6]) •4+sum([5,6]) •5+sum([6])
•6+sum([ ]) •0 •6 + 0 = 6 •5 + 6 = 11 •4 + 11 = 15•15
![Page 6: Recursion. Sum a list of numbers Iterative def sum(L): total = 0 for i in L: total += i return total Recursive def sum(L): if len(L) == 0: return 0 else:](https://reader030.fdocuments.us/reader030/viewer/2022032704/56649d7f5503460f94a62286/html5/thumbnails/6.jpg)
Fact
• Iteration and recursion are equivalent.Any iteration can be replaced by recursion.Any recursion can be replaced by iteration.
![Page 7: Recursion. Sum a list of numbers Iterative def sum(L): total = 0 for i in L: total += i return total Recursive def sum(L): if len(L) == 0: return 0 else:](https://reader030.fdocuments.us/reader030/viewer/2022032704/56649d7f5503460f94a62286/html5/thumbnails/7.jpg)
Why use Recursion?
• Clarity: The logic of certain task can sometimes be clarified.
• Elegance: The coding is sometimes more elegant.
![Page 8: Recursion. Sum a list of numbers Iterative def sum(L): total = 0 for i in L: total += i return total Recursive def sum(L): if len(L) == 0: return 0 else:](https://reader030.fdocuments.us/reader030/viewer/2022032704/56649d7f5503460f94a62286/html5/thumbnails/8.jpg)
A recursive algorithm must…
…have a base case.
def sum(L): if len(L) == 0: return 0 else: return L[0]+ sum(L[1:])
Empty list [ ] isthe base case
![Page 9: Recursion. Sum a list of numbers Iterative def sum(L): total = 0 for i in L: total += i return total Recursive def sum(L): if len(L) == 0: return 0 else:](https://reader030.fdocuments.us/reader030/viewer/2022032704/56649d7f5503460f94a62286/html5/thumbnails/9.jpg)
A recursive algorithm must…
…have a base case.
…change its state and move toward the base case.
def sum(L): if len(L) == 0: return 0 else: return L[0]+ sum(L[1:])
L L[1:]
Closer to [ ]
![Page 10: Recursion. Sum a list of numbers Iterative def sum(L): total = 0 for i in L: total += i return total Recursive def sum(L): if len(L) == 0: return 0 else:](https://reader030.fdocuments.us/reader030/viewer/2022032704/56649d7f5503460f94a62286/html5/thumbnails/10.jpg)
A recursive algorithm must…
…have a base case.
…change its state and move toward the base case.
…call itself, recursively.
def sum(L): if len(L) == 0: return 0 else: return L[0]+ sum(L[1:])
![Page 11: Recursion. Sum a list of numbers Iterative def sum(L): total = 0 for i in L: total += i return total Recursive def sum(L): if len(L) == 0: return 0 else:](https://reader030.fdocuments.us/reader030/viewer/2022032704/56649d7f5503460f94a62286/html5/thumbnails/11.jpg)
Recursion Worksheet
def sum(L): if len(L) == 0: return 0 else: return \
L[0]+sum(L[1:])
a = sum([4,5,6])
Function In:Base In: Base Out:Recursion In: Recursion Out:Function Out:
Value Type
1. Input simplified:2. Input types match:3. Output types match:
![Page 12: Recursion. Sum a list of numbers Iterative def sum(L): total = 0 for i in L: total += i return total Recursive def sum(L): if len(L) == 0: return 0 else:](https://reader030.fdocuments.us/reader030/viewer/2022032704/56649d7f5503460f94a62286/html5/thumbnails/12.jpg)
Recursion Worksheet
def sum(L): if len(L) == 0: return 0 else: return \
L[0]+sum(L[1:])
a = sum([4,5,6])
Function In:Base In: Base Out:Recursion In: Recursion Out:Function Out:
Value Type
1. Input simplified:2. Input types match:3. Output types match:
[4,5,6] list
![Page 13: Recursion. Sum a list of numbers Iterative def sum(L): total = 0 for i in L: total += i return total Recursive def sum(L): if len(L) == 0: return 0 else:](https://reader030.fdocuments.us/reader030/viewer/2022032704/56649d7f5503460f94a62286/html5/thumbnails/13.jpg)
Recursion Worksheet
def sum(L): if len(L) == 0: return 0 else: return \
L[0]+sum(L[1:])
a = sum([4,5,6])
Function In:Base In: Base Out:Recursion In: Recursion Out:Function Out:
Value Type
1. Input simplified:2. Input types match:3. Output types match:
[4,5,6] list[ ] list
![Page 14: Recursion. Sum a list of numbers Iterative def sum(L): total = 0 for i in L: total += i return total Recursive def sum(L): if len(L) == 0: return 0 else:](https://reader030.fdocuments.us/reader030/viewer/2022032704/56649d7f5503460f94a62286/html5/thumbnails/14.jpg)
Recursion Worksheet
def sum(L): if len(L) == 0: return 0 else: return \
L[0]+sum(L[1:])
a = sum([4,5,6])
Function In:Base In: Base Out:Recursion In: Recursion Out:Function Out:
Value Type
1. Input simplified:2. Input types match:3. Output types match:
[4,5,6] list[ ] list 0 number
![Page 15: Recursion. Sum a list of numbers Iterative def sum(L): total = 0 for i in L: total += i return total Recursive def sum(L): if len(L) == 0: return 0 else:](https://reader030.fdocuments.us/reader030/viewer/2022032704/56649d7f5503460f94a62286/html5/thumbnails/15.jpg)
Recursion Worksheet
def sum(L): if len(L) == 0: return 0 else: return \
L[0]+sum(L[1:])
a = sum([4,5,6])
Function In:Base In: Base Out:Recursion In: Recursion Out:Function Out:
Value Type
1. Input simplified:2. Input types match:3. Output types match:
[4,5,6] list[ ] list 0 number
[5,6] list
![Page 16: Recursion. Sum a list of numbers Iterative def sum(L): total = 0 for i in L: total += i return total Recursive def sum(L): if len(L) == 0: return 0 else:](https://reader030.fdocuments.us/reader030/viewer/2022032704/56649d7f5503460f94a62286/html5/thumbnails/16.jpg)
Recursion Worksheet
def sum(L): if len(L) == 0: return 0 else: return \
L[0]+sum(L[1:])
a = sum([4,5,6])
Function In:Base In: Base Out:Recursion In: Recursion Out:Function Out:
Value Type
1. Input simplified:2. Input types match:3. Output types match:
[4,5,6] list[ ] list 0 number
[5,6] list 11 number
![Page 17: Recursion. Sum a list of numbers Iterative def sum(L): total = 0 for i in L: total += i return total Recursive def sum(L): if len(L) == 0: return 0 else:](https://reader030.fdocuments.us/reader030/viewer/2022032704/56649d7f5503460f94a62286/html5/thumbnails/17.jpg)
Recursion Worksheet
def sum(L): if len(L) == 0: return 0 else: return \
L[0]+sum(L[1:])
a = sum([4,5,6])
Function In:Base In: Base Out:Recursion In: Recursion Out:Function Out:
Value Type
1. Input simplified:2. Input types match:3. Output types match:
[4,5,6] list[ ] list 0 number
[5,6] list 11 number
4+11 number
![Page 18: Recursion. Sum a list of numbers Iterative def sum(L): total = 0 for i in L: total += i return total Recursive def sum(L): if len(L) == 0: return 0 else:](https://reader030.fdocuments.us/reader030/viewer/2022032704/56649d7f5503460f94a62286/html5/thumbnails/18.jpg)
Recursion Worksheet
def sum(L): if len(L) == 0: return 0 else: return \
L[0]+sum(L[1:])
a = sum([4,5,6])
Function In:Base In: Base Out:Recursion In: Recursion Out:Function Out:
Value Type
1. Input simplified:2. Input types match:3. Output types match:
[4,5,6] list[ ] list 0 number
[5,6] list 11 number
4+11 number
![Page 19: Recursion. Sum a list of numbers Iterative def sum(L): total = 0 for i in L: total += i return total Recursive def sum(L): if len(L) == 0: return 0 else:](https://reader030.fdocuments.us/reader030/viewer/2022032704/56649d7f5503460f94a62286/html5/thumbnails/19.jpg)
Recursion Worksheet
def sum(L): if len(L) == 0: return 0 else: return \
L[0]+sum(L[1:])
a = sum([4,5,6])
Function In:Base In: Base Out:Recursion In: Recursion Out:Function Out:
Value Type
1. Input simplified:2. Input types match:3. Output types match:
[4,5,6] list[ ] list 0 number
[5,6] list 11 number
4+11 number
![Page 20: Recursion. Sum a list of numbers Iterative def sum(L): total = 0 for i in L: total += i return total Recursive def sum(L): if len(L) == 0: return 0 else:](https://reader030.fdocuments.us/reader030/viewer/2022032704/56649d7f5503460f94a62286/html5/thumbnails/20.jpg)
Recursion Worksheet
def sum(L): if len(L) == 0: return 0 else: return \
L[0]+sum(L[1:])
a = sum([4,5,6])
Function In:Base In: Base Out:Recursion In: Recursion Out:Function Out:
Value Type
1. Input simplified:2. Input types match:3. Output types match:
[4,5,6] list[ ] list 0 number
[5,6] list 11 number
4+11 number