Lecture 23 β ExercisesΒΆ
Solutions to the problems below must be sent to Submitty for automatic scoring. A separate file must submitted for each problem. Start by downloading lec23_ex.zip from the Submitty Course Materials site.
The following code recursively calculates the maximum value in a list.
def recursive_max_impl( L, i ): ''' The actual recursive function. ''' if i == len(L)-1: return L[i] else: return max(L[i], recursive_max_impl(L,i+1) ) def recursive_max( L ): ''' The driver for the recursive function. This handles the special case of an empty list and otherwise makes the initial call to the recursive function. ''' if len(L) == 0: return -99999 # By convention else: return recursive_max_impl( L, 0 ) if __name__ == "__main__": L1 = [ 5 ] print(recursive_max( L1 )) L2 = [ 24, 23.1, 12, 15, 1 ] print(recursive_max( L2)) L2.append( 55 ) print(recursive_max( L2 ))
Using this as a guide, write a recursive function to add the values in a list. You should have to change very little code. Implement your code in the provided file
prob1.pyImplement a recursive solution to the Fibonacci number function definition given during lecture. Implement your code in the provided file
prob2.py.Looking carefully at the Fibonacci definition shows that calculating Fibonacci number \(f_{n-1}\) requires calculating Fibonacci number \(f_{n-2}\), which is also required for calculating Fibonacci number \(f_n\). This means there is redundant computation. This redundancy gets worse for numbers \(f_{n-3}\), \(f_{n-4}\), etc.
Fortunately, the Fibonacci sequence is relatively easy to compute non-recursively. That is your problem here. The trick is to build up the solution using a for loop that calculates \(f_2\), then \(f_3\), then \(f_4\), etc. Implement your solution in
prob3.py.Out of curiosity, you could run your solutions to the previous two problems on large values of n and time the difference.