|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Jun 2004
Città: Monselice (PD)
Messaggi: 4641
|
[C]numeri di fibonacci
dovrei fare un programmino che mi calcoli i numeri di fibonacci, solo che non so da dove partire, cioe io dovrei inserire un numero e lui dovrebbe trovarmi in penultimo inserito
__________________
2500KCorsair H70Asrock EXTREME4 GEN38GB Corsair DDR3 1600MHz CL8Gainward GTX570 GLHSSD Samsung 830 64GBCorsair CX600Centaurion2G500206BW \_\_\_\_\_DrSpeed_/_/_/_/_/
|
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jan 2001
Città: Villanova di Guidonia (RM)
Messaggi: 1079
|
E' un programma che si risolve facilmente con la ricorsione. Prova a scriverti su carta il "ragionamento" matematico per induzione. Da lì costruisci l'algoritmo ricorsivo.
|
|
|
|
|
|
#3 | |
|
Senior Member
Iscritto dal: Apr 2006
Città: TV-PD
Messaggi: 741
|
dai un occhiata qui..
http://it.wikipedia.org/wiki/Successione_di_Fibonacci c'è anche parte del codice Quote:
in che senso in penultimo inserito?? |
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Jun 2004
Città: Monselice (PD)
Messaggi: 4641
|
non posso usare la ricorsione, inquanto oltre a non sapere cos'e preferisco fare una cosa semplice
penultimo nel senso che dovrebbe scrivermi a schermo il numeri prima di quello che inserisco
__________________
2500KCorsair H70Asrock EXTREME4 GEN38GB Corsair DDR3 1600MHz CL8Gainward GTX570 GLHSSD Samsung 830 64GBCorsair CX600Centaurion2G500206BW \_\_\_\_\_DrSpeed_/_/_/_/_/
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Jun 2004
Città: Monselice (PD)
Messaggi: 4641
|
dopo 2 notti di studi e ricerche(
Codice:
#include <stdio.h>
int main()
{
int i;
float c=1;
float b=1;
float a=0;
float d=0;
for(i=0;i<10;i++)
{
c=a+b;
printf("%f \n",c);
d=b+c;
printf("%f \n",d);
a=d+c;
printf("%f \n",a);
b=d+a;
printf("%f \n",b);
}
scanf("%d");
}
__________________
2500KCorsair H70Asrock EXTREME4 GEN38GB Corsair DDR3 1600MHz CL8Gainward GTX570 GLHSSD Samsung 830 64GBCorsair CX600Centaurion2G500206BW \_\_\_\_\_DrSpeed_/_/_/_/_/
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Dai che lo puoi fare ancora più corto...
Basta pensare che il numero di Fibonacci dipende solo dai due numeri precedenti... Quindi diventa chiaro che basta memorizzarsi solo i due numeri precedenti |
|
|
|
|
|
#7 |
|
Junior Member
Iscritto dal: Nov 2005
Messaggi: 3
|
ciao Dr.Speed, sono d'accordo con cionci, il programma può diventare + corto e + semplice.
Riutilizza le variabili ad esempio con a=0 e b=1 scrivi a=a+b e non c=a+b così il valore parziale lo riassegni ad una delle due variabili senza utilizzarne un'altra nuova. Se non riesci ti do un ulteriore aiuto. ciao |
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Jun 2004
Città: Monselice (PD)
Messaggi: 4641
|
grazie a tutti e due
__________________
2500KCorsair H70Asrock EXTREME4 GEN38GB Corsair DDR3 1600MHz CL8Gainward GTX570 GLHSSD Samsung 830 64GBCorsair CX600Centaurion2G500206BW \_\_\_\_\_DrSpeed_/_/_/_/_/
|
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Jun 2004
Città: Monselice (PD)
Messaggi: 4641
|
mi sto scervellando ma non riesco a capire come potrei fare
__________________
2500KCorsair H70Asrock EXTREME4 GEN38GB Corsair DDR3 1600MHz CL8Gainward GTX570 GLHSSD Samsung 830 64GBCorsair CX600Centaurion2G500206BW \_\_\_\_\_DrSpeed_/_/_/_/_/
|
|
|
|
|
|
#10 | |
|
Senior Member
Iscritto dal: Dec 2005
Città: Ahimè..Bs ----------------------------------- Messaggi tot: 1000+
Messaggi: 772
|
Quote:
no perchè ho appena finito di fare il programma a mio fratello.... si può fare in 2 modi.. ricorsivo o non ricorsivo. Nel secondo caso ti basta un vettore (se vuoi memorizzare tutta la serie) ed è fatto!
__________________
11/2006-Inspiron6400 -t7200|2GB@533MHz|S-ATA 80gb@7200rpm|Ati X1400|9cell Battery||garanzia 3 anni On-Site NBD ex: Toshiba M30-154 (PERCHE' NON COMPRARE TOSHIBA..LEGGI QUI) + P4 2.8@3,2GHz 1MB L2, Gigabyte 915p-duo,1GB DDR400 DualCh, gF 6600gt 128MB GDDR3 + Canon Ixus50 + Creative Muvo^2 1.5GB |
|
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Nov 2002
Messaggi: 4329
|
se vuoi farlo nel modo piu semplice allora ti dico che il modo piu semplice è quello ricorsivo...questo caso in particolare, fatto iterativamente, è incredibilmente piu difficile che non fatto ricorsivamente...
__________________
|18k+|slk800|a7n8x|1Gb/ddr400|Gf4mx440|Pio108|WD 160Gb|Case|Uni|Album|AnimeClick|OneManga| |ClassicThrash!|BNR Metal|TrueMetal|Dime|Chuck| |
|
|
|
|
|
#12 | |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
|
|
|
|
|
|
|
#13 | |
|
Senior Member
Iscritto dal: Dec 2005
Città: Ahimè..Bs ----------------------------------- Messaggi tot: 1000+
Messaggi: 772
|
Quote:
__________________
11/2006-Inspiron6400 -t7200|2GB@533MHz|S-ATA 80gb@7200rpm|Ati X1400|9cell Battery||garanzia 3 anni On-Site NBD ex: Toshiba M30-154 (PERCHE' NON COMPRARE TOSHIBA..LEGGI QUI) + P4 2.8@3,2GHz 1MB L2, Gigabyte 915p-duo,1GB DDR400 DualCh, gF 6600gt 128MB GDDR3 + Canon Ixus50 + Creative Muvo^2 1.5GB |
|
|
|
|
|
|
#14 | |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
|
|
|
|
|
|
|
#15 |
|
Senior Member
Iscritto dal: Dec 2005
Città: Ahimè..Bs ----------------------------------- Messaggi tot: 1000+
Messaggi: 772
|
cmq... nota per il giovane programmatore...
Quando si usano delle variabili aiuta molto dare loro un nome sensato... Nel codice che ha messo sopra dr.speed ci voleva molta concentrazione per capire...! io per esempio l'avrei fatto così: double attuale=0.0, i_meno1=0.0, i_meno2=0.0; for (int i=0, i<50, i++) { attuale= i_meno1+i_meno2; cout<<attuale<<endl; //..... hehe.. ora fallo tu...non servono altre variabili.. } nb: se invece del double si usa il long, da fib(47) in poi viene negativo, perchè? (ESPERTI ESONERATI DALLA RISPOSTA)
__________________
11/2006-Inspiron6400 -t7200|2GB@533MHz|S-ATA 80gb@7200rpm|Ati X1400|9cell Battery||garanzia 3 anni On-Site NBD ex: Toshiba M30-154 (PERCHE' NON COMPRARE TOSHIBA..LEGGI QUI) + P4 2.8@3,2GHz 1MB L2, Gigabyte 915p-duo,1GB DDR400 DualCh, gF 6600gt 128MB GDDR3 + Canon Ixus50 + Creative Muvo^2 1.5GB |
|
|
|
|
|
#16 |
|
Bannato
Iscritto dal: Feb 2003
Messaggi: 947
|
Codice:
#include <stdio.h>
#include <math.h>
void main(void)
{
int i;
short n;
printf("Numeri di Fibonacci: ");
scanf("%4d",&n);
for(i=0;i<n;i++)
printf("%.0f ",(pow(1+sqrt(5),i)-pow(1-sqrt(5),i))/(pow(2,i)*sqrt(5)));
}
|
|
|
|
|
|
#17 | |
|
Senior Member
Iscritto dal: Dec 2005
Città: Ahimè..Bs ----------------------------------- Messaggi tot: 1000+
Messaggi: 772
|
Quote:
tra l'altro se l'esercizio è quello che aveva mio fratello, l'obiettivo era dimostrare che il rapporto tra 2 consecutivi tende a (1+sqrt(5))/2 (o qualcosa di simile...)
__________________
11/2006-Inspiron6400 -t7200|2GB@533MHz|S-ATA 80gb@7200rpm|Ati X1400|9cell Battery||garanzia 3 anni On-Site NBD ex: Toshiba M30-154 (PERCHE' NON COMPRARE TOSHIBA..LEGGI QUI) + P4 2.8@3,2GHz 1MB L2, Gigabyte 915p-duo,1GB DDR400 DualCh, gF 6600gt 128MB GDDR3 + Canon Ixus50 + Creative Muvo^2 1.5GB Ultima modifica di leox@mitoalfaromeo : 30-11-2006 alle 12:08. |
|
|
|
|
|
|
#18 | |
|
Bannato
Iscritto dal: Feb 2003
Messaggi: 947
|
Quote:
Codice:
#include <stdio.h>
#define N 20
void main(void)
{
unsigned long i,j,n;
printf("0 1");
for(n=(N-2)>>1,i=0,j=1;n;n--)
{
i+=j;
printf(" %ld",i);
j+=i;
printf(" %ld",j);
}
}
|
|
|
|
|
|
|
#19 | |
|
Senior Member
Iscritto dal: Dec 2005
Città: Ahimè..Bs ----------------------------------- Messaggi tot: 1000+
Messaggi: 772
|
Quote:
![]() (non ho capito una cippa...! ma io c non lo conosco)
__________________
11/2006-Inspiron6400 -t7200|2GB@533MHz|S-ATA 80gb@7200rpm|Ati X1400|9cell Battery||garanzia 3 anni On-Site NBD ex: Toshiba M30-154 (PERCHE' NON COMPRARE TOSHIBA..LEGGI QUI) + P4 2.8@3,2GHz 1MB L2, Gigabyte 915p-duo,1GB DDR400 DualCh, gF 6600gt 128MB GDDR3 + Canon Ixus50 + Creative Muvo^2 1.5GB |
|
|
|
|
|
|
#20 | |
|
Bannato
Iscritto dal: Feb 2003
Messaggi: 947
|
Quote:
Codice:
#include <stdio.h>
#define N 20
void main(void)
{
unsigned long i=0,j=1,n;
for(n=N/2;n;n--,i+=j,j+=i)
printf("%ld %ld ",i,j);
}
|
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 22:16.




















