Laufzeitfehler in der Rekursion in SubsequenzenC++

Programme in C++. Entwicklerforum
Anonymous
 Laufzeitfehler in der Rekursion in Subsequenzen

Post by Anonymous »

Ich schreibe eine rekursive Funktion, um alle möglichen Untersequenzen einer Zeichenfolge zu erstellen und die Zeichenfolgen als Vektor zurückzugeben. Dies ist eine Herausforderung durch die Codierung von Ninjas. Ich wiederhole jeden Zeichen in der Zeichenfolge und erzeugte zwei Fälle, unabhängig davon, ob ich das Zeichen beibehalten oder aus der Zeichenfolge löschen möchte. Wenn der Basisfall trifft, wird die generierte Zeichenfolge in den ANS -Vektor hinzugefügt, der alle Teilsequenzen enthält. So sieht mein Code aus: < /p>

Code: Select all

void recurse(string str, string value, int idx, vector &ans){
//base case
if(idx < 0 && !value.empty()){
ans.push_back(value);
return;
}

//keep letter
recurse(str, value, idx-1, ans);

//delete letter
value.erase(idx,1);
recurse(str, value, idx-1, ans);
}

vector subsequences(string str){
vector ans;
string value = str;
recurse(str, value, str.size()-1, ans);
return ans;
}
Dies gibt einen Laufzeitfehler in der IF -Bedingung in der Recurse -Funktion: if (idx

Code: Select all

    //base case
if(idx < 0){
if(!value.empty()) ans.push_back(value);
return;
}
Die Bedingung ist erforderlich, damit der letzte leere Zeichenfolge nicht zum ANS -Vektor hinzugefügt wird. Kann jemand erklären, warum beim Überprüfen von 2 Bedingungen zusammen mit && einen Laufzeitfehler angibt, aber wenn Sie sie separat mit einem verschachtelten If -Block überprüfen, läuft es völlig in Ordnung?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post