####
### Exercice 2 : Minimum
####

# Question 1
# m = (g + d) // 2
# mini(L, g, d) =   L[g] si g = d 
#                   min(mini(L, g, m), mini(L, m+1, d)) sinon

# Question 2

def mini(L, g, d):
    if g == d:
        return L[g]
    else:
        m = (g + d) // 2
        return min(mini(L, g, m), mini(L, m+1, d))


# Question 3

def minimum(L):
    return mini(L, 0, len(L) -1)

print(minimum([5, 2, 4, 3, 5]))

# Question 4

def mini(L, g, d):
    print(L[g:d+1]) # Pour afficher le morceau de liste actuelle
    if g == d:
        return L[g]
    else:
        m = (g + d) // 2
        return min(mini(L, g, m), mini(L, m+1, d))
print(minimum([5, 2, 4, 3, 5]))
