Rekusive iterieren?
-
Habe eine Liste, welche 1000 elemente enthält! jedes Element enthält den abstand(m_dDuration) zum davorliegen, zudem noch einen Zeiger auf das davorliegende Element (siehe Code);
habe nur 2 Varianten um den abstand bis zum 500 Element der Liste zu berechnen, einmal iterieren und einmal rekursive. Hat die Rekusive variante nachteile Stackgröße technisch?
struct TEST{ double m_dDuration; TEST* Prev; double Time(){ if(Prev==NULL) return 0; else return Prev->Time()+m_dDuration; } }; std::list<TEST> LISTE; TEST *p; for(int i=0; i<1000; i++){ TEST o; if(LISTE.empty()){ o.m_dDuration=0; o.Prev=NULL; } else{ o.m_dDuration=10; o.Prev= &LISTE.back(); } LISTE.push_back(o); if(i== 500) p= &LISTE.back(); } // VARIANE A (4 sekunden) for(int l=0; l< 10000; l++){ double d=0; for(std::list<TEST>::iterator it = LISTE.begin(); it != LISTE.end(); d+= it->m_dDuration,it++) if(d== 5000) break; } //VARIANTE B (368millisekunden= for(int l=0; l< 10000; l++) double erg= p->Time();
-
Google: rekursion stack schaut doch schon mal interessant aus
-
double d=0; ... if(d== 5000) break;Ist dein Indianischer-Name "Der mit dem Feuer spielt"?
-
hustbaer schrieb:
double d=0; ... if(d== 5000) break;Ist dein Indianischer-Name "Der mit dem Feuer spielt"?
rofl
