Inavariante di una funzione

di il
5 risposte

Inavariante di una funzione

Buongiorno,

avrei la necessità di capire il concetto di invariante per funzioni scritte in C, sia iterative che ricorsive. Potete darmi qualche dritta e/o link dove recuperare un minimo di spiegazione?

Grazie 1000!

5 Risposte

  • Re: Inavariante di una funzione

    Buongiorno,

    siccome intuisco che la domanda sia molto vaga, posto un esempio trovato sulle dispense che ho:
    
    /* Dato un intero n>0, costruisce la lista di nodi da 1 ad n */
    node* buildlis_n (int n)
    {
    node *p, *lis;
    lis=NULL;
    while (n>0)
    /* Invariante: lis e' la lista dei nodi contenenti i, 0<n<i<n,
    ove con n si denota il valore di input del parametro "n", e con n il suo valore ad un dato passo del ciclo */
    {
    p=newnode();
    p->data=n;
    p->next=lis;
    lis=p;
    n--;
    }
    return(lis);
    }
    Complessita': O(n)
    Non capisco quale sia il ragionamento di base per capire / determinare quale sia l'invariante; grazie per qualsiasi informazione a commento della mia richiesta.


    Saluti
  • Re: Inavariante di una funzione

    0<n<i<n
    Per te sta parte ha senso?
  • Re: Inavariante di una funzione

    Per me lis non é invariante.
    E la funzione postata é veramente priva di senso,che se ne fa uno di una lista che punta all'ultimo elemento?
  • Re: Inavariante di una funzione

    Grazie per le Vostre risposte; purtroppo anche per me alcune cose non hanno senso ma forse perchè ... non sono ancora riuscito a carpire il concetto di base. Non esiste un libro di testo in merito che possa in qualche modo aiutarmi? Grazie per qualsiasi info aggiuntiva.

    Saluti
  • Re: Inavariante di una funzione

    Buongiorno e buon rientro dalle ferie.

    Qualcuno di Voi ha avuto modo di riflettere su questo post? E' emerso qualcosa di nuovo?

    Grazie, saluti
Devi accedere o registrarti per scrivere nel forum
5 risposte