Bonjour,

Je poste ce topic, car j'ai un soucis avec une fonction récursive.
La fonction permet en fait d'ajouter un élément dans un vector à une position données. Cependant, si la position est occupé, il faut décaler la/les valeur(s) pour insérer la nouvelle.

Voici mon code:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
 
/** Fonction d'insertion d'un triable à une position choisie **/
void Tiroir::insert(int pos, Objet elem)
{
    if(pos >= 0)
    {
        // On augmente la taille si besoin est:
        if(pos >= this->tab.size()) {
            this->tab.resize(this->tab.size() + 5);
        }
 
        // S'il ya déja un objet, on décalle les objets.
        if(this->tab[pos].getNom() == "") {
            // On insert l'objet à la bonne position.
            this->tab[pos] = elem;
        }
        else {
            this->insert((pos + 1), this->tab[pos]);
        }
 
        this->nbElem++;
    }
    else
    {
        cout << "Vous ne pouvez inserez de triable a cette position: (" << pos << ")" << endl;
        // todo exception à faire
    }
}
S'il n'y a aucun objet, l'insertion est bonne, sinon je tombe sur une boucle infinis...
Faut il obligatoirement une valeur de retour pour une fonction récursive?

Merci d'avance pour votre aide