# solution sans récursivité, un peu lourd car répétitif

def multiplication_v1(n1:int, n2:int) -> int:
    '''Renvoie la multiplication n1*n2 uniquement basée sur des + ou des -'''
    
    if n1 == 0 or n2 == 0:
        reponse = 0

    else:
        
        if n2 < 0:
            n1 = -n1  # a*b est transformé en (-a)*(-b)
            n2 = -n2
        # en arrivant ici, n2 est maintenant forcément positif
        reponse = 0
        for etape in range(n2):
            reponse = reponse + n1

    return reponse


# solution récursive, la mieux ici en terme de code à écrire

def multiplication(n1:int, n2:int) -> int:    
    '''Renvoie la multiplication n1*n2 uniquement basée sur des + ou des -'''
    
    if n1 == 0 or n2 == 0:  # CONDITION D'ARRET 
        return 0  # Cas de base 
    
    else:  # Cas récursif
        if n2 < 0:
            return - multiplication(n1, - n2)
        else:
            return n1 + multiplication(n1, n2 - 1)
        


assert multiplication(3,5) == 15
assert multiplication(-4,-8) == 32
assert multiplication(-2,6) == -12
assert multiplication(-2,0) == 0


            
    
    
    
        
            
            
