Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente bannato
    Registrato dal
    Jul 2001
    Messaggi
    559

    [C]come si fa il fattoriale di un numero?

    non ho voglia di stare a fare milel cicli o ke.. non c'è una funzione in qualche libreria per fare il fattoriale di un numero?

    (n!)
    3!=3*2*1=6
    4!=4*3*2*1= 24
    {per chi non sapesse cos'è il fattoriale o cosa intendo..}
    grazie!!!

  2. #2
    Utente bannato
    Registrato dal
    Jul 2001
    Messaggi
    559
    vi prego.. risp!!!

  3. #3
    prova con la ricorsione

  4. #4
    Utente bannato
    Registrato dal
    Jul 2001
    Messaggi
    559
    Originariamente inviato da suomi_viking_86
    prova con la ricorsione
    vabbè... speravoc i fosse una unzione in qualche libreria... ho fatto direttamente unalgoritmo che faccia il fattoriale.

  5. #5
    codice:
    double Fattoriale(int n) 
    {
       if(n==0) return 1; else return n*Fattoriale(n-1);
    }
    ...Terrible warlords, good warlords, and an english song

  6. #6
    Utente bannato
    Registrato dal
    Sep 2003
    Messaggi
    1,012
    versione iterativa:

    codice:
    long int fattoriale(int n)
    {
        int i; long int result = 1;
        for(i=0; i<n; i++)
            result *= n;
        return result;
    }

  7. #7
    Originariamente inviato da iguana13
    versione iterativa:

    codice:
    long int fattoriale(int n)
    {
        int i; long int result = 1;
        for(i=0; i<n; i++)
            result *= n;
        return result;
    }
    sicuro che vada bene??
    Io avrei fatto:
    codice:
    long int fattoriale(int n){
    int i; long int res=1;
    for(i=n;i>1;i--)
     res *=i;
    
    return res;
    }
    apparte che io decremento il contatore ,mentre tu lo incrementi,secondo me il problema è che nella tua versione associ ripetitivamente a result il prodotto tra il numero di cui calcolare il fattoriale per l'"accumolo" createsi in result stesso....cioè non decrementi mai n e lo moltiplichi sempre cosi' com'è!


    sbaglio??

    ps se provio vogliamo farlo in "salita" LOL avrei fatto...
    codice:
    long int fattoriale(int n){
    int i; long int res=1;
    for(i=0;i<n:i++)
    res *=i;
    
    return res;
    }
    forse volevi scriverlo cosi'?
    Vediamo..sogni che diventano professione...passioni che diventano vita... Free as in Freedom...

  8. #8
    Originariamente inviato da Johnny_Depp
    codice:
    double Fattoriale(int n) 
    {
       if(n==0) return 1; else return n*Fattoriale(n-1);
    }
    ma + facile di così?!?! (io avrei messo int e non double.. cmq)
    if u think u'r too small to make a difference, try sleeping with a mosquito!!

    Giochi a calcetto? Vuoi prenotare online il tuo campo preferito?

  9. #9
    Originariamente inviato da geppo80
    ma + facile di così?!?! (io avrei messo int e non double.. cmq)
    bè double o long int sono + appropiati visto che la funziona fattoriale ritorna numeri molto grandi!

    Vediamo..sogni che diventano professione...passioni che diventano vita... Free as in Freedom...

  10. #10
    Utente bannato
    Registrato dal
    Sep 2003
    Messaggi
    1,012
    Originariamente inviato da andrea_NET-_DSL
    sicuro che vada bene??
    Io avrei fatto:
    codice:
    long int fattoriale(int n){
    int i; long int res=1;
    for(i=n;i>1;i--)
     res *=i;
    
    return res;
    }
    apparte che io decremento il contatore ,mentre tu lo incrementi,secondo me il problema è che nella tua versione associ ripetitivamente a result il prodotto tra il numero di cui calcolare il fattoriale per l'"accumolo" createsi in result stesso....cioè non decrementi mai n e lo moltiplichi sempre cosi' com'è!


    sbaglio??

    ps se provio vogliamo farlo in "salita" LOL avrei fatto...
    codice:
    long int fattoriale(int n){
    int i; long int res=1;
    for(i=0;i<n:i++)
    res *=i;
    
    return res;
    }
    forse volevi scriverlo cosi'?
    Sì hai ragione, l'ho fatto al volo senza neanche riguardarlo... ed ho scritto una grande cazzata!

    Tra l'altro siccome i parte da zero, la prima volta mltiplica per zero e quindi rimarrà sempre zero!

    !

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.