Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2012
    Messaggi
    25

    [C++] Funzione ricorsiva

    Ciao a tutti.
    Devo implementare una funzione ricorsiva che mi restituisca il numero di elementi presenti in una lista.

    codice:
     void lista::count(){
         int conta=0;
         nodo *p;
         p=l;            //l è la testa della lista
         
         while (p!=0){
             conta++;
             p=p->succ;
         }cout<<"Il numero di elementi è:"<<conta;
     }
    Questa è la funzione che ho scritto, ma non saprei proprio come rendere tale funzione ricorsiva! Come posso fare?

  2. #2
    Rendi count() membro di nodo; a questo punto, basta fare sì che nodo::count() restituisca (succ->count()+1) se succ!=NULL, 1 altrimenti.
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2012
    Messaggi
    25
    int lista::conta(){
    nodo *p;
    p=l;
    if (p==NULL)
    return 0;
    else
    return (1+conta(p->succ));
    }



    Mi da i seguenti errori:
    LIST-LIB.cpp: In member function ‘int lista::conta()’:
    LIST-LIB.cpp:324:32: error: no matching function for call to ‘lista::conta(nodo*&)’
    LIST-LIB.cpp:318:5: note: candidate is: int lista::conta()
    make[2]: *** [build/Debug/Cygwin_4.x-Windows/LIST-LIB.o] Error 1

  4. #4
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Il metodo non ha parametri ma poi lo chiami con un argomento...
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.