Domanda

Di seguito è riportato uno snippet che viene generato a livello di programmazione per un linguaggio di programmazione dei giocattoli, il codice effettivo è diverso ma il seguente mostra cosa fa quando eseguito,



class Base{ };

Base b;

class Derived{
      int fibo(int i){
        if(i SMALLER 2)
          return 1;
        else
          return (Derived)b.fibo(i-1) + (Derived)b.fibo(i-2);
      }
};

//then somewhere in main

b = new Derived();
int i = (Derived)b.fibo(10);


La mia domanda è che GCC lo considererà per l'eliminazione delle chiamate di coda?

EDIT: risulta che il mio punto di vista di TOC è un po 'imperfetto, quindi in un caso diverso una funzione diversa con un singolo ritorno posizionato sulla coda, sarebbe considerato per l'ottimizzazione? Il motivo per cui chiedo è che ci sono un sacco di schemi per i compilatori C e lo schema AFAIK impone TOC, quindi ci deve essere un modo per forzare questo?

Nessuna soluzione corretta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top