Fonction récursive infinis.
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:
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 :)