Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 14 su 14
  1. #11
    Utente di HTML.it
    Registrato dal
    Jul 2011
    Messaggi
    106
    La ricorsione puo essere utilizzata anche per esempio per stampare gli elementi di un vettore,in questo modo posso eseguire la stampa al contrario.
    Spero di essere stato più chiaro,sto generalizzando l'utilizzo di questo tipo di ricorsione in altri casi,che non hanno nulla a che fare con le liste....

    Eccoti un esempio
    codice:
    void scrivi(int n)
    {
    if (n==0) return;
    scrivi(n-1);
    for (int i=0; i<n; i++)
    cout << '*';
    cout << endl;
    }

  2. #12
    Utente di HTML.it
    Registrato dal
    Jul 2011
    Messaggi
    106
    Se non ti scoccia vorrei chiederti in merito alle ricorsioni,xché non posso scrivere..
    codice:
    void scrivi(int n)
    {
    if (n==0) return;
    scrivi(n--);<-----errore,crash
    for (int i=0; i<n; i++)
    cout << '*';
    cout << endl;
    }
    ma devo scrivere
    codice:
    void scrivi(int n)
    {
    if (n==0) return;
    scrivi(n-1);<-----Corretto,compila
    for (int i=0; i<n; i++)
    cout << '*';
    cout << endl;
    }
    ??
    Grazie

  3. #13
    Utente bannato
    Registrato dal
    Oct 2010
    Messaggi
    1,219
    Perchè se scrivi così:
    codice:
    void scrivi(int n)
    {
    if (n==0) return;
    scrivi(n--);<-----errore,crash
    for (int i=0; i<n; i++)
    cout << '*';
    cout << endl;
    }
    n non cambierà mai il suo valore, lo stack si riempie di chiamate finchè non si riempie perchè non si esce mai dalla ricorsione.
    Supponiamo che n inizialmente sia 10, se io scrivo:
    codice:
    int n=10;
    printf("%d\n",n--);   // esempio 1
    n=10;
    printf("%d\n",--n);  // esempio 2
    Nell' esempio 1 stampa 10, nell' esempio 2 stampa 9.
    Questo perchè il -- messo prima della variabile è un operatore di pre decremento: prima la variabile viene decrementata, poi viene stampata.
    Mentre il -- dopo la variabile è un operatore di post decremento: prima viene stampata la variabile, poi viene decrementata.
    Cosa analoga per l' operatore +.
    Per cui se tu chiami:
    codice:
    scrivi(n--);
    Prima termina la chiamata ricorsiva di scrivi, poi decrementa n.Per cui se n è inizialmente uguale a 10, chiamerari sempre scrivi(10); la catena di chiamate non termina mai finchè vai in segmentation fault.
    Puoi chiamarla invece così:
    codice:
    scrivi(--n);

  4. #14
    Utente di HTML.it
    Registrato dal
    Jul 2011
    Messaggi
    106
    Perfetto,grazie per la disponibilità!!

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 © 2026 vBulletin Solutions, Inc. All rights reserved.