Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 17 su 17
  1. #11
    ops, se hai bisogno anke degli altri mandami un pm ke ti aiuto volentieri tanto sono semplici
    #include <cervello.h>

  2. #12
    Originariamente inviato da Eyescream
    ma funziona quel codice?
    Veramente no

    Mi sono scordato "*f"

    Questo è il codice funziononte:
    codice:
    int fact(int f){
      int risposta;
    
      if(f==1)return 1;
      risposta = fact(f-1)*f;
      return risposta;
    }

  3. #13
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Originariamente inviato da gandalf45
    Veramente no

    Mi sono scordato "*f"

    Questo è il codice funziononte:
    codice:
    int fact(int f){
      int risposta;
    
      if(f==1)return 1;
      risposta = fact(f-1)*f;
      return risposta;
    }
    E hai anche dimenticato un caso base: quando l'argomento è 0!
    codice:
    int fact(int f){
      int risposta;
    
      if((f==1) || (f == 0))return 1;
      risposta = fact(f-1)*f;
      return risposta;
    }
    Ovviamente tralasciando i casi di "errore" per i valori negativi (caso in cui la funzione va in loop).

    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  4. #14
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Prova anche questo
    codice:
    int fatt(int x) { return (x <= 0) ? 1 : x * fatt(x-1); }
    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #15
    Originariamente inviato da Sal84
    allora sto risolvendo questi problemini in maniera elementare poiché ad esempio nn so ancora le funzioni.


    programmino FATTORIALE n! CON CICLO WHILE

    #include <iostream.h>
    #include <stdlib.h>

    int main()
    {
    int risultato=1;
    int n;
    int i=1;
    cin >> n;
    while ( i<=n ) {
    risultato= risultato*i;
    i++; }
    cout << risultato;
    system("PAUSE");
    return 0;
    }










    PROGRAMMINO CHE PRENDE 5 NUMERI IN INPUT, NE FA IL FATTORIALE, E LI SOMMA

    #include <iostream.h>
    #include <stdlib.h>

    int main()
    { int risultato =0;

    for (int i = 0; i < 5; ++i) { int n;
    cin >> n;
    int fatt = 1;
    for (int j = 1; j <= n; ++j) fatt *= j;
    risultato += fatt;
    }
    cout << risultato;
    }





    funzionano ma ci sono modi per scrivere meno codice... cioè farli + elegantemente?

    mi rendo conto di aver chiesto il programma per la somma/prodotto di numeri... sono alquanto progredito direi..LoL
    Scusa, ma tu avresti bisogno di chiarimenti in C o in C++ ?

  6. #16
    Originariamente inviato da LeleFT
    codice:
    int fatt(int x) { return (x <= 0) ? 1 : x * fatt(x-1); }
    dal basso delle mie conoscenze sulla ricorsività, questa non ritorna sempre 1 alla fine?

  7. #17
    No: funziona bene, ma se facciamo così ci risparmimo un'istanza ogni volta:

    codice:
    int fact(int n)  {
        return ((n<=1) ? 1 : n*fact(n-1));
    }
    Summum crede nefas animam preferre pudori e propter vitam vivendi perdere causas.
    (Giovenale)

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.