def rec_max(L):
''' (list or int) -> int
Return L if it's an int, or the maximum int in L,
a possibly nested list of numbers.
Assume: L is an int or non-empty list
>>> rec_max([17, 21, 0])
21
>>> rec_max([17, [21, 24], 0])
24
'''
if isinstance(L, list):
return max([rec_max(x) for x in L])
else:
return L
In this function, the function re_max is called again and again until we find the elements that are not lists and the loop stops. We did a lot of tracing in the lecture and in the tutorial, starting with depth 0 and moved on to more complicated examples gradually. We can also find the docstring by calling and tracing examples, just like we did in the tutorial.
By calling non-lists or empty list, we get the special cases of the function. How I understand this is checking the 'else:' and checking the build-in method called in the recursion. Then we check examples with more depth, and we can conclude the docstring and the assumption.
The first term test is next week, wish everyone a good grade!
没有评论:
发表评论