Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    171

    contare elementi lista C

    sto guardando un esercizio per l'esame.
    questo esercizio chiede di fare una funzione ricorsiva che conti gli elementi di una lista.

    la soluzione data dal prof e questa.
    codice:
    int count_elems(node* head_list) {
        if(head_list)
            return (1+count_elems(head_list->next));
        else
        return 0;
    }
    io invece risolvendo l'esercizio ho fatto cosi.
    codice:
    int count_elems(node* head_list) {
        int count = 0;
    
        if(head_list){
            count+=1;
            count_elems(head_list->next);
        }
        return count;
    }
    volevo chiedervi se e sbagliato come ho fatto io oppure sono simili le 2 funzioni.

  2. #2
    La tua funzione è sbagliata: ogni chiamata ricorsiva ha la "sua" variabile count, che non è modificata dalle chiamate ricorsive che fai, per cui di fatto la tua funzione restituirà sempre 1 (dato che ogni volta count viene inizializzata a 0 e quindi incrementata di 1).
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    171
    quindi l'unico modo e come la prima funzione ??

    codice:
    return (1+count_elems(head_list->next));

  4. #4
    Ricorsivamente sì (o meglio, ovviamente puoi fare tutte le variazioni sintattiche che vuoi, ma il concetto è sempre quello); in alternativa puoi scrivere una versione iterativa di questo algoritmo.
    Amaro C++, il gusto pieno dell'undefined behavior.

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.