PDA

Visualizza la versione completa : [C] Fibonacci con algoritmo ricorsivo


adempius
09-05-2012, 12:59
Salve,
andando avanti negli studi, in questo momento sto trovando problemi con un programma che genera i numeri di fibonacci in modo RICORSIVO


/* definizione ricorsiva della funzione fibonacci */

long fibonacci( long n )

/* caso base */

if ( n == 0 or n == 1 ) {
return 0;
}

else {
return fibonacci( n - 1 ) + fibonacci( n - 2 );
}
}




/* Fig. 5.15: fig05_15.c
Recursive fibonacci function */
#include <stdio.h>

long fibonacci( long n ); /* function prototype */

/* function main begins program execution */
int main()
{
long result; /* fibonacci value */
long number; /* number input by user */

/* obtain integer from user */
printf( "Enter an integer: " );
scanf( "%ld", &number );

/* calculate fibonacci value for number input by user */
result = fibonacci( number );

/* display result */
printf( "Fibonacci( %ld ) = %ld\n", number, result );

return 0; /* indicates successful termination */

} /* end main */

/* Recursive definition of function fibonacci */
long fibonacci( long n )
{
/* base case */
if ( n == 0 || n == 1 ) {
return n;
} /* end if */
else { /* recursive step */
return fibonacci( n - 1 ) + fibonacci( n - 2 );
} /* end else */

} /* end function fibonacci */




quello che non ho capito e se è necassario imparare a fare questi programmi
dato che il mio intendo è studiare il C per una prima base, in quanto dopo passero
a php html5 o jq per fare sitiweb ecc ecc

e poi cmq non ho capito la definizione ricorsiva della funziona fibonacci

se questo topic non è giusto spiegatemi dove lo devo mettere prima di chiuderlo

alka
09-05-2012, 13:05
Originariamente inviato da adempius
sto trovando problemi con un programma che genera i numeri di fibonacci in modo RICORSIVO

Cioè? Quali problemi? Spiega.

adempius
09-05-2012, 13:13
ho capito come funziona diciamo la tabellina di fibonaccia, perchè non l'ho studiata o cmq perchè sono passati 10 anni dalla scuola, praticamente non riesco a tradurre l'ultima definizione della funziona fibonacci ora la metto in grassetto sopra.

Kaamos
09-05-2012, 14:24
La funzione in grassetto è sbagliata perché il secondo numero della successione di Fibonacci è 1, non 0.

Per l'utilità, se vuoi imparare a programmare in generale, direi che è utile, la ricorsione è una tecnica fondamentale nella programmazione. Per gli specifici campi lascio la parola a chi ci lavora.

adempius
09-05-2012, 14:49
vabbe la ritorsione si accomuna a fibonacci? cioè se non riesco a decifrere diciamo la funziona di fibonacci non capisco la ricorsione? che poi non è altro che richiama se stessa

Kaamos
09-05-2012, 14:56
Originariamente inviato da adempius
vabbe la ritorsione si accomuna a fibonacci? cioè se non riesco a decifrere diciamo la funziona di fibonacci non capisco la ricorsione? che poi non è altro che richiama se stessa

Eh? Che vuol dire che si accomuna a Fibonacci?
Questo è un esempio semplice, e se non lo capisci della ricorsione non hai capito pressoché nulla; la ricorsione si può usare in altri casi più complessi, chessò. nelle visite degli alberi...

torn24
09-05-2012, 15:11
quello che non ho capito e se è necassario imparare a fare questi programmi
dato che il mio intendo è studiare il C per una prima base, in quanto dopo passero
a php html5 o jq per fare sitiweb ecc ecc





Questi programmi ,sono esercizi , che bene o male vengono proposti ,per ogni linguaggio
di programmazione , e servono per imparare ad applicare un algoritmo con un dato linguaggio.
se il tuo scopo è programmare in PHP , non vedo la necessità di iniziare col C ,che è un linguaggio molto istruttivo , ma molte cose che impareresti , non le userai in PHP , come puntatori , o tipi di dato che in PHP non esistono .
Prova a valutare se non convenga iniziare direttamente dal PHP , che è anche più semplice ,apprendere le basi .

adempius
09-05-2012, 17:52
Originariamente inviato da torn24
Questi programmi ,sono esercizi , che bene o male vengono proposti ,per ogni linguaggio
di programmazione , e servono per imparare ad applicare un algoritmo con un dato linguaggio.
se il tuo scopo è programmare in PHP , non vedo la necessità di iniziare col C ,che è un linguaggio molto istruttivo , ma molte cose che impareresti , non le userai in PHP , come puntatori , o tipi di dato che in PHP non esistono .
Prova a valutare se non convenga iniziare direttamente dal PHP , che è anche più semplice ,apprendere le basi .

grazie torn, l'ho sempre pensato però ho pensato che se riuscivo almeno in parte ad apprendere il c
cosa che penso di aver fatto, ma terra terra :D ..gli altri linguaggi in un certo senso li avrei capiti quasi con scioltezza :D :dhò: :yuppi:

torn24
09-05-2012, 18:32
se riuscivo almeno in parte ad apprendere il c
cosa che penso di aver fatto, ma terra terra ..gli altri linguaggi in un certo senso li avrei capiti quasi con scioltezza

Non è propio cosi , è come dire se corro per 10 km la maratona di newyork , poi
non ho problemi a correre 30 km :nonono:
la fatica sarebbe la stessa , se corressi la maratona di atene e dopo quella di newyork , ma la strada che devi percorrere è diversa :)

Scara95
09-05-2012, 19:47
Originariamente inviato da torn24
Non è propio cosi , è come dire se corro per 10 km la maratona di newyork , poi
non ho problemi a correre 30 km :nonono:
la fatica sarebbe la stessa , se corressi la maratona di atene e dopo quella di newyork , ma la strada che devi percorrere è diversa :)
Non é neanche proprio così, se hai corso per 10 sei un po' più allenato e farai un po' meno fatica: così é anche per i linguaggi di programmazione: molti costrutti sono simili, seppur restano diversi...
Inoltre la conoscenza di più linguaggi rende più "elastico" il tuo modo di pensare...

Loading