61A Lecture 22 Announcements Linked Lists Recursive Lists Can - PowerPoint PPT Presentation
61A Lecture 22 Announcements Linked Lists Recursive Lists Can Change Attribute assignment statements can change first and rest attributes of a Link 4 Recursive Lists Can Change Attribute assignment statements can change first and rest
61A Lecture 22
Announcements
Linked Lists
Recursive Lists Can Change Attribute assignment statements can change first and rest attributes of a Link 4
Recursive Lists Can Change Attribute assignment statements can change first and rest attributes of a Link The rest of a linked list can contain the linked list as a sub-list 4
Recursive Lists Can Change Attribute assignment statements can change first and rest attributes of a Link The rest of a linked list can contain the linked list as a sub-list >>> s = Link(1, Link(2, Link(3))) 4
Recursive Lists Can Change Attribute assignment statements can change first and rest attributes of a Link The rest of a linked list can contain the linked list as a sub-list >>> s = Link(1, Link(2, Link(3))) Global frame First Rest First Rest First Rest 1 2 3 s 4
Recursive Lists Can Change Attribute assignment statements can change first and rest attributes of a Link The rest of a linked list can contain the linked list as a sub-list >>> s = Link(1, Link(2, Link(3))) Global frame First Rest First Rest First Rest 1 2 3 s Note: The actual environment diagram is much more complicated. 4
Recursive Lists Can Change Attribute assignment statements can change first and rest attributes of a Link The rest of a linked list can contain the linked list as a sub-list >>> s = Link(1, Link(2, Link(3))) Note: The actual environment diagram is much more complicated. 4
Recursive Lists Can Change Attribute assignment statements can change first and rest attributes of a Link The rest of a linked list can contain the linked list as a sub-list >>> s = Link(1, Link(2, Link(3))) >>> s.first = 5 Note: The actual environment diagram is much more complicated. 4
Recursive Lists Can Change Attribute assignment statements can change first and rest attributes of a Link The rest of a linked list can contain the linked list as a sub-list >>> s = Link(1, Link(2, Link(3))) >>> s.first = 5 >>> t = s.rest Note: The actual environment diagram is much more complicated. 4
Recursive Lists Can Change Attribute assignment statements can change first and rest attributes of a Link The rest of a linked list can contain the linked list as a sub-list >>> s = Link(1, Link(2, Link(3))) >>> s.first = 5 >>> t = s.rest >>> t.rest = s Note: The actual environment diagram is much more complicated. 4
Recursive Lists Can Change Attribute assignment statements can change first and rest attributes of a Link The rest of a linked list can contain the linked list as a sub-list >>> s = Link(1, Link(2, Link(3))) >>> s.first = 5 >>> t = s.rest >>> t.rest = s >>> s.first Note: The actual environment diagram is much more complicated. 4
Recursive Lists Can Change Attribute assignment statements can change first and rest attributes of a Link The rest of a linked list can contain the linked list as a sub-list >>> s = Link(1, Link(2, Link(3))) >>> s.first = 5 >>> t = s.rest >>> t.rest = s >>> s.first 5 Note: The actual environment diagram is much more complicated. 4
Recursive Lists Can Change Attribute assignment statements can change first and rest attributes of a Link The rest of a linked list can contain the linked list as a sub-list >>> s = Link(1, Link(2, Link(3))) >>> s.first = 5 >>> t = s.rest >>> t.rest = s >>> s.first 5 >>> s.rest.rest.rest.rest.rest.first Note: The actual environment diagram is much more complicated. 4
Recursive Lists Can Change Attribute assignment statements can change first and rest attributes of a Link The rest of a linked list can contain the linked list as a sub-list >>> s = Link(1, Link(2, Link(3))) >>> s.first = 5 >>> t = s.rest >>> t.rest = s >>> s.first 5 >>> s.rest.rest.rest.rest.rest.first 2 Note: The actual environment diagram is much more complicated. 4
Recursive Lists Can Change Attribute assignment statements can change first and rest attributes of a Link The rest of a linked list can contain the linked list as a sub-list >>> s = Link(1, Link(2, Link(3))) >>> s.first = 5 >>> t = s.rest >>> t.rest = s >>> s.first 5 >>> s.rest.rest.rest.rest.rest.first 2 Global frame First Rest First Rest Note: The actual 5 2 s environment diagram is much more complicated. t 4
Environment Diagrams
Go Bears! Global frame def oski(bear): func oski(bear)[parent=G] oski def cal(berk): nonlocal bear if bear(berk) == 0: Return Value return [berk+1, berk-1] bear = lambda ley: berk-ley return [berk, cal(berk)] Return Value return cal(2) oski(abs) Return Value Return Value 6
Go Bears! Global frame def oski(bear): func oski(bear)[parent=G] oski def cal(berk): f1: oski [parent=G] nonlocal bear if bear(berk) == 0: Return Value return [berk+1, berk-1] bear = lambda ley: berk-ley return [berk, cal(berk)] Return Value return cal(2) oski(abs) Return Value Return Value 6
Go Bears! Global frame def oski(bear): func oski(bear)[parent=G] oski def cal(berk): f1: oski [parent=G] nonlocal bear bear if bear(berk) == 0: Return Value return [berk+1, berk-1] bear = lambda ley: berk-ley return [berk, cal(berk)] Return Value return cal(2) oski(abs) Return Value Return Value 6
Go Bears! Global frame def oski(bear): func oski(bear)[parent=G] oski def cal(berk): f1: oski [parent=G] nonlocal bear bear func abs(...) [parent=G] if bear(berk) == 0: Return Value return [berk+1, berk-1] bear = lambda ley: berk-ley return [berk, cal(berk)] Return Value return cal(2) oski(abs) Return Value Return Value 6
Go Bears! Global frame def oski(bear): func oski(bear)[parent=G] oski def cal(berk): f1: oski [parent=G] nonlocal bear bear func abs(...) [parent=G] cal if bear(berk) == 0: func cal(berk) [parent=f1] Return Value return [berk+1, berk-1] bear = lambda ley: berk-ley return [berk, cal(berk)] Return Value return cal(2) oski(abs) Return Value Return Value 6
Go Bears! Global frame def oski(bear): func oski(bear)[parent=G] oski def cal(berk): f1: oski [parent=G] nonlocal bear bear func abs(...) [parent=G] cal if bear(berk) == 0: func cal(berk) [parent=f1] Return Value return [berk+1, berk-1] bear = lambda ley: berk-ley return [berk, cal(berk)] Return Value return cal(2) oski(abs) Return Value Return Value 6
Go Bears! Global frame def oski(bear): func oski(bear)[parent=G] oski def cal(berk): f1: oski [parent=G] nonlocal bear bear func abs(...) [parent=G] cal if bear(berk) == 0: func cal(berk) [parent=f1] Return Value return [berk+1, berk-1] f2: cal bear = lambda ley: berk-ley return [berk, cal(berk)] Return Value return cal(2) oski(abs) Return Value Return Value 6
Go Bears! Global frame def oski(bear): func oski(bear)[parent=G] oski def cal(berk): f1: oski [parent=G] nonlocal bear bear func abs(...) [parent=G] cal if bear(berk) == 0: func cal(berk) [parent=f1] Return Value return [berk+1, berk-1] f2: cal [parent=f1] bear = lambda ley: berk-ley return [berk, cal(berk)] Return Value return cal(2) oski(abs) Return Value Return Value 6
Go Bears! Global frame def oski(bear): func oski(bear)[parent=G] oski def cal(berk): f1: oski [parent=G] nonlocal bear bear func abs(...) [parent=G] cal if bear(berk) == 0: func cal(berk) [parent=f1] Return Value return [berk+1, berk-1] f2: cal [parent=f1] bear = lambda ley: berk-ley berk 2 return [berk, cal(berk)] Return Value return cal(2) oski(abs) Return Value Return Value 6
Go Bears! Global frame def oski(bear): func oski(bear)[parent=G] oski def cal(berk): func λ (ley) [parent=f2] f1: oski [parent=G] nonlocal bear bear func abs(...) [parent=G] cal if bear(berk) == 0: func cal(berk) [parent=f1] Return Value return [berk+1, berk-1] f2: cal [parent=f1] bear = lambda ley: berk-ley berk 2 return [berk, cal(berk)] Return Value return cal(2) oski(abs) Return Value Return Value 6
Go Bears! Global frame def oski(bear): func oski(bear)[parent=G] oski def cal(berk): func λ (ley) [parent=f2] f1: oski [parent=G] nonlocal bear bear func abs(...) [parent=G] cal if bear(berk) == 0: func cal(berk) [parent=f1] Return Value return [berk+1, berk-1] f2: cal [parent=f1] bear = lambda ley: berk-ley berk 2 return [berk, cal(berk)] Return Value return cal(2) oski(abs) Return Value Return Value 6
Go Bears! Global frame def oski(bear): func oski(bear)[parent=G] oski def cal(berk): func λ (ley) [parent=f2] f1: oski [parent=G] nonlocal bear bear func abs(...) [parent=G] cal if bear(berk) == 0: func cal(berk) [parent=f1] Return Value return [berk+1, berk-1] f2: cal [parent=f1] bear = lambda ley: berk-ley berk 2 return [berk, cal(berk)] Return Value return cal(2) oski(abs) Return Value Return Value 6
Recommend
More recommend
Explore More Topics
Stay informed with curated content and fresh updates.