Solutions to Problems 1, 2, and 3 can be checked by running given code. Here are solutions
to Problems 4-7 that require you to write recursive functions.

Problem 4.
def recursiveLinearSearch(L, k, left, right):
    # Base case: the slice to be searched is empty
    if left > right:
        return False
    
    # Recursive case
    return k == L[left] or recursiveLinearSearch(L, k, left+1, right)

Problem 5.
def isSorted(L, left, right):
    #Base Case: an empty list is sorted and so is a list with one element
    if left > right or left == right:
        return True
    
    # Recursive case: the first two elements need to be in order and
    # the rest of the list, starting at position left+1 needs to be sorted
    return L[left] <= L[left+1] and isSorted(L, left+1, right)

Problem 6.
def recursiveI2B(n):
    # Base cases
    if n == 0:
        return "0"
    
    if n == 1:
        return "1"
    
    # Recursive Case
    if n % 2 == 0:
        return recursiveI2B(n/2) + "0"
    else:
        return recursiveI2B(n/2) + "1"
    
Problem 7.
def minimum(L):
    # Base case: L has exactly one element
    if len(L) == 1:
        return L[0]
    
    # Recursive case: L has 2 or more elements
    m = minimum(L[1:])
    if m < L[0]: 
        return m
    else:
        return L[0]
