Avrei bisogno di aiuto per creare un programma che calcoli il fattoriale di un numero!!... purtroppo non ho idee di come impostarlo!
Avrei bisogno di aiuto per creare un programma che calcoli il fattoriale di un numero!!... purtroppo non ho idee di come impostarlo!
Sul forum ci sono decine di discussioni su come calcolare ("creare"? :D) il fattoriale di un numero. Se proprio non ci riesci ti basta fare una ricerca, ma ti consiglio di provare a farlo da solo perché è facile e avere il codice pronto non ti serve a molto.
every day above ground is a good one
Beh ... mi sembra impossibile non avere idee, se sai come si calcola "con carta e penna" un fattoriale !Originariamente inviato da Q.Pagliuca
purtroppo non ho idee di come impostarlo!
No MP tecnici (non rispondo nemmeno!), usa il forum.
allora il fattoriale si calcola n*(n-1)*(n-2) ecc peròmica posso mettermi a scrivere la formula all'infinito -.-' ..è qst il problema ..perchè avevo pensato di fare il caso base cioè " if (n = 0 || n=1) fattoriale = 1" e così poi riportare il fattoriale di ogni numero al caso base ..però così nn funziona perchè dovrei creare la funzione fattoriale ...ma che non sono riuscito a creare :sOriginariamente inviato da oregon
Beh ... mi sembra impossibile non avere idee, se sai come si calcola "con carta e penna" un fattoriale !
Quando calcoli il fattoriale di un numero, n è definito, non è più variabile.
Quindi, se chiedi di calcolare il fattoriale di 5, devi calcolare
5*4*3*2*1
Di conseguenza, la prima cosa da fare è chiedere il numero di cui si vuole conoscere il fattoriale, e la seconda, un ciclo da 1 al numero indicato ... all'interno del ciclo fai le moltiplicazioni.
No MP tecnici (non rispondo nemmeno!), usa il forum.
stavo leggendo una articolo su Template metaprogramming ed ho trovato del codice che potrebbe fare al caso tuo:
http://en.wikipedia.org/wiki/Template_metaprogrammingcodice:int factorial(int n) { if (n == 0) return 1; return n * factorial(n - 1); } void foo() { int x = factorial(4); // == (4 * 3 * 2 * 1 * 1) == 24 int y = factorial(0); // == 0! == 1 }
Alla batteria dai retta ballA
[OT]Avevo letto un articolo di Bjarne Stroustrup in cui ammetteva di essere rimasto lui stesso a bocca aperta quando aveva visto una funzione di calcolo del fattoriale risolta tutta a compile-time grazie ai template.[/OT]
Amaro C++, il gusto pieno dell'undefined behavior.
saresti cosi gentile da dirmi come hanno fatto?Originariamente inviato da MItaly
[OT]Avevo letto un articolo di Bjarne Stroustrup in cui ammetteva di essere rimasto lui stesso a bocca aperta quando aveva visto una funzione di calcolo del fattoriale risolta tutta a compile-time grazie ai template.[/OT]
comunque entrato IT il fattoriale o lo calcoli con le funzioni ricorsive oppure usi un ciclo for niente di più falcie:
penso sia giusta però non l'ho controllata la funzione...e comunque c'è sempre quella ricorsiva...codice:int fat(int n){ temp=0; for(int i=n,i>0,i--) temp=temp*i; return temp; }
cogli l'attimo
Originariamente inviato da c_junior
saresti cosi gentile da dirmi come hanno fatto?
comunque entrato IT il fattoriale o lo calcoli con le funzioni ricorsive oppure usi un ciclo for niente di più falcie:
penso sia giusta però non l'ho controllata la funzione...e comunque c'è sempre quella ricorsiva...codice:int fat(int n){ temp=0; for(int i=n,i>0,i--) temp=temp*i; return temp; }
già è proprio quella ricorsiva a cui avevo pensato ma mi manca qlks per completare il ragionamento e scrivere il programma ..c'è qlks che mi sfugge :S
Guarda il link postato poco fa.Originariamente inviato da c_junior
saresti cosi gentile da dirmi come hanno fatto?
Senza contare che la soluzione iterativa è molto più efficiente.
comunque entrato IT il fattoriale o lo calcoli con le funzioni ricorsive oppure usi un ciclo for niente di più falcie:
Amaro C++, il gusto pieno dell'undefined behavior.