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 😃


Anmelden zum Antworten