Visualizzazione dei risultati da 1 a 3 su 3

Discussione: [C] Ricorsione

  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2001
    Messaggi
    224

    [C] Ricorsione

    Buon giorno. Non riesco a capire come funziona questa funzione

    int funzione1 (int n)
    {
    if (n == 0)
    {
    return 0;
    }else{
    return (funzione1(n-1) +2);
    }
    }

    Praticamente mi calcola n*2, ma non riesco a capire gli ambienti che sono generati ad ogni chiamata.
    Per quello che ho visto, per quello che ho sentito, per sconcertante necessitá...obbligo di caduta verso mondi leggeri di sottili pensieri d´occhio e cuore... (Giovanni Lindo Ferretti)

  2. #2
    Utente di HTML.it L'avatar di sky_451
    Registrato dal
    Apr 2003
    Messaggi
    194
    Ciao,
    poniamo il caso che tu passi alla funzione un'n uguale a 3.Il risultato, come hai detto tu, alla fine sarà 6.
    La funzione fa questo:
    1°: 3 è uguale a 0? No allora passa alla funzione 2.
    2°: 2==0? No, allora passa alla funzione 1.
    3°: 1==0? No, allora passa alla funzione 0.
    4°: 0==0? Sì, allora ritorna 0 a 3°.
    La 3°, a questo punto, ritorna 0+2=2 a 2°.
    La 2° ritorna 2+2=4 a 1°.
    La 1°, infine, ritorna 4+2=6 al chiamante della funzione.
    Spero di essere stato abbastanza chiaro, non è molto semplice spiegare una ricorsione.
    "There is no dark side of the moon really. Matter of fact it’s all dark."

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2001
    Messaggi
    224
    ok...+ o - ho capito...devo solo farci un po' di pratica, grazie mille
    Per quello che ho visto, per quello che ho sentito, per sconcertante necessitá...obbligo di caduta verso mondi leggeri di sottili pensieri d´occhio e cuore... (Giovanni Lindo Ferretti)

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