Dubbio su ricorsivi (java)
  • In diretta da GamesVillage.it
    • News
    • -
    • In Evidenza
    • -
    • Recensioni
    • -
    • RetroGaming
    • -
    • Anteprime
    • -
    • Video
    • -
    • Cinema

Visualizzazione risultati da 1 a 8 di 8

Discussione: Dubbio su ricorsivi (java)

Cambio titolo
  1. #1
    C'è solo l'Inter. L'avatar di lord_nerevar
    Registrato il
    12-04
    Località
    Varese
    Messaggi
    16.718

    Dubbio su ricorsivi (java)

    Codice:
     static long Fatt(int a)
        {
            long num=a;        //num fa da accumulatore, a fa da indice
            if(a<=1)             //se il numero di cui calcolare il fattoriale è 1 o 0, oppure se è 
                return(num);   //un numero mag quando a torna a valere 1 il fatt è stato calcolato
            else
            {
                a--;
                num=(num*Fatt(a));
            }
        }
    Questa funzione dovrebbe tornare il fattoriale del numero che gli si passa... Per funzionare funziona, ma da un errore in compilazione che si può ignorare ma che mi ha fatto venire un dubbio. E' scritto correttamente? Le variabili vengono deallocate o rimangono in ram? Non ho ben capito cosa succede una volta che il programma va a finire nell'if di chiusura...

    L'errore è:

    missing return statement
    }
    ^
    1 error

    uso JCreator

  2. #2
    Utente L'avatar di Bonch
    Registrato il
    07-05
    Località
    Mestre, Italy
    Messaggi
    2.515
    Sinceramente non ho capito l'errore ma penso perch&#232; manchi un return nell'else comunque se vuoi fare una ricorsione ti consiglio l'utilizzo delle espressioni condizionali ecco come l'ho fatto io:
    Codice:
        static long Fatt(int a)
        {
            return (a<=1)? 1 : a*Fatt(a-1);
        }

  3. #3
    Utente L'avatar di marcelloma
    Registrato il
    01-08
    Località
    Palermo
    Messaggi
    4.083
    Citazione Bonch Visualizza Messaggio
    Sinceramente non ho capito l'errore ma penso perchè manchi un return nell'else comunque se vuoi fare una ricorsione ti consiglio l'utilizzo delle espressioni condizionali ecco come l'ho fatto io:
    Codice:
    static long Fatt(int a)
        {
            return (a<=1)? 1 : a*Fatt(a-1);
        }
    bellissima !!!
    e' c? perche' static?

  4. #4
    Linux User # 477930 L'avatar di Metflar
    Registrato il
    09-06
    Località
    Anagni
    Messaggi
    2.353
    Citazione marcelloma Visualizza Messaggio
    bellissima !!!
    e' c? perche' static?
    è java

    conoscenze: C\C++, Java, PHP,Python

  5. #5
    C'è solo l'Inter. L'avatar di lord_nerevar
    Registrato il
    12-04
    Località
    Varese
    Messaggi
    16.718
    Citazione Bonch Visualizza Messaggio
    Sinceramente non ho capito l'errore ma penso perch&#232; manchi un return nell'else comunque se vuoi fare una ricorsione ti consiglio l'utilizzo delle espressioni condizionali ecco come l'ho fatto io:
    Codice:
        static long Fatt(int a)
        {
            return (a<=1)? 1 : a*Fatt(a-1);
        }
    Mai visto codice cos&#236;
    Visto che si tratta di cose scolastiche &#232; meglio se rimango con quei comandi l&#236;, senza mettere sintassi che io non dovrei sapere

  6. #6
    Utente L'avatar di Bonch
    Registrato il
    07-05
    Località
    Mestre, Italy
    Messaggi
    2.515
    Beh guarda che io faccio la quarta superiore e questa cosa delle espressioni condizionali me l'hanno insegnata a scuola!

  7. #7
    StorieDallaSalaMacchine L'avatar di miniBill '90
    Registrato il
    08-05
    Località
    Bergerac
    Messaggi
    4.204
    Citazione lord_nerevar Visualizza Messaggio
    Codice:
     static long Fatt(int a)
        {
            long num=a;        //num fa da accumulatore, a fa da indice
            if(a<=1)             //se il numero di cui calcolare il fattoriale è 1 o 0, oppure se è 
                return(num);   //un numero mag quando a torna a valere 1 il fatt è stato calcolato
            else
            {
                a--;
                num=(num*Fatt(a));
            }
        }
    Questa funzione dovrebbe tornare il fattoriale del numero che gli si passa... Per funzionare funziona, ma da un errore in compilazione che si può ignorare ma che mi ha fatto venire un dubbio. E' scritto correttamente? Le variabili vengono deallocate o rimangono in ram? Non ho ben capito cosa succede una volta che il programma va a finire nell'if di chiusura...

    L'errore è:

    missing return statement
    }
    ^
    1 error

    uso JCreator
    concettualmente è giusto, l'errore è che non devi fare num=num*Fatt(a), ma return num*Fatt(a)

    ESISTE UN UNICO AMMINISTRATORE
    Quoto-thisisgorman-
    (La mi ex-firma sta qua)

  8. #8
    Utente L'avatar di alecha
    Registrato il
    03-04
    Località
    Bologna
    Messaggi
    35.683
    Citazione lord_nerevar Visualizza Messaggio
    Mai visto codice così
    Visto che si tratta di cose scolastiche è meglio se rimango con quei comandi lì, senza mettere sintassi che io non dovrei sapere
    vabè, le espressioni condizionali si fanno prima o poi anche a scuola

Regole di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •