oregon ha scritto:
Proverei ad aiutarti ma non capisco cosa vuoi dire ...
lamu ha scritto:
Ragazzi, state calmi, per favore! Pienamente d'accordo con voi: l'intento non è quello di calcolare il fattoriale di 64000, ma:
1) usando un numero così grande sono costretta ad usare un vettore per memorizzarlo (primo skill che il prof.vuole valutare); FATTO
2) sviluppare una funzione che calcoli il fattoriale: Work In Progress con il vostro aiuto;
3) stampare i risultati a video; Work In Progress;
4) utilizzare dei 'contatori' che mi segnalino quando smettere di calcolare il fattoriale; Next Step
Potreste aiutarmi?
Grazie
Scusa, lamu, ma questo post e' incomprensibile:
1) a che ti serve un vettore per il calcolo del fattoriale?
2) di quali contatori stai parlando?
3) a che ti servono i contatori, se il calcolo del fattoriale di N richiede ESATTAMENTE N (o N+1) passi?
Nel tuo primo post parlavi di calcolare i fattoriale per tutti i numeri compresi tra A e B. Il vettore ti serve per salvare i rusultati del calcolo del fattoriale dei diversi numeri?
Quindi, ricominciamo:
0) separa i concetti. Da una parte 'devo calcolare f(x) per tutti i numeri compresi tra A e B e salvare i risultati in un vettore'. Che sia il fattoriale o qualunque altra funzione con un solo argomento, non cambia assolutamente nulla nella logica da implementare. Dall'altra parte hai 'calcolare il fattoriale di n'
a) definisci 'fattoriale di n'
b) decidi come lo vuoi calcolare: in modo iterativo o ricorsivo?
c) vuoi utilizzare l'aritmetica in precisione arbitraria, gli interi di macchina o i floting point di macchina?
d) quale e' il range di valori su cui vuoi calcolare il fattoriale?
e) lo vuoi calcolare in modo esatto o usando le formule approssimate? Esatto, il fattoriale puo' essere calcolato con la
approssimazione di stirling
Ti ricordo, come ti e' gia' stato detto, che il fattoriale di 64000 e' un numero che non e' esprimibile con nessuno dei tipi di numeri di macchina (intero a 8, 16, 32 o 64 bit) ne con i floating point di macchina (32 o 64 bit). Serve una libreria per l'aritmetica in precisione arbitraria. Non difficile da implementare, ma neanche una passeggiata per chi e' alle prime armi.
Tra l'altro, una cosa che ti consiglio di fare, e' scoprire quale e' il valore massimo di n per cuil il suo fattoriale e' esprimibile con un intero di 8, 16, ..64 bit, o con un float di 32 o 64 bit. E magari postarlo
Tral'altro, questo ti dovrebbe illuminare sul perche' ottieni sempre 0!