Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Ho letto il titolo del progetto. Mi sembra molto interessante.
Ho qualche idea su come gestire i grandi numeri che la serie genera.
Voi come la pensate?
Hey, ciao... Ora carico una versione con il codice sorgente che ho dimenticato di mettere nelle altre... Ci sono alcuni problemi come per esempio la variabile che se Integer arriva solo al 23° numero della serie e se real ogni volta mostra i decimali (ad esempio 5,5000000000000E+000) e non saprei risolvere di mio... Inoltre dopo il 40° numero ci mette moltissimo tempo a calcolare D: Per il momento il programma è del tutto da sviluppare, i miei sono solo schizzi
Hey, ciao... Ora carico una versione con il codice sorgente che ho dimenticato di mettere nelle altre... Ci sono alcuni problemi come per esempio la variabile che se Integer arriva solo al 23° numero della serie e se real ogni volta mostra i decimali (ad esempio 5,5000000000000E+000) e non saprei risolvere di mio... Inoltre dopo il 40° numero ci mette moltissimo tempo a calcolare D: Per il momento il programma è del tutto da sviluppare, i miei sono solo schizzi
La visualizzazione di un numero, può essere formattata dal comando writeln in questo modo:
Codice sorgente - presumibilmente Plain Text
...
n:=5.3; (* n è stata dichiarata real *)
vriteln(n:6:2);
...
Il numero n, verrà visualizzato con 2 cifra decimali, e occuperà 6 caratteri.
Il calcolo è rallentato, perché utilizzi una funzione ricorsiva. Per migliorare le prestazioni, basta utilizzare un ciclo iterativo.
Un alternativa, forse più veloce, è l'uso del rapporto aureo:
Codice sorgente
s5 = sqrt(5);
Phi = (1 + s5) / 2;
F = pow(Phi, n);
if (n % 2) {
F -= 1 / F;
} else {
F += 1 / F;
}
F /= s5;
Fn = round(F); // Fn è l'approssimazione dell'n-esimo numero di fibonacci, che è intero per definizione
Ma questo calcolo non è più valido per n grandi a causa delle approssimazioni...