Getallen van Fibonacci berekenen.
-
- Berichten: 2.589
Getallen van Fibonacci berekenen.
Volgend programma zou de getallen van fabonacci moeten kunnen berekenen alleen zie ik niet goed hoe?
Men heeft twee variabelen temp1 en temp2 deze initialiseert men nooit toch telt men ze op een gegeven moment op hoe kan dat? Ziet er iemand hoe dit kan werken? Groeten.
Men heeft twee variabelen temp1 en temp2 deze initialiseert men nooit toch telt men ze op een gegeven moment op hoe kan dat? Ziet er iemand hoe dit kan werken? Groeten.
-
- Berichten: 7.068
Re: Getallen van Fibonacci berekenen.
Weet je wat een referentie is?Volgend programma zou de getallen van fabonacci moeten kunnen berekenen alleen zie ik niet goed hoe?
-
- Berichten: 2.589
Re: Getallen van Fibonacci berekenen.
Call by reference? ja dat ken ik, dit is dat je een referentie doorgeeft naar waar een andere functie de waarde mag schrijven.
Maar hier wordt zowel result als temp1 en temp2 niet geinitialiseerd?
Maar hier wordt zowel result als temp1 en temp2 niet geinitialiseerd?
- Berichten: 24.578
Re: Getallen van Fibonacci berekenen.
Probeer eens door het programma te lopen met fib(1,result) (dus n = 1 in plaats van 4) en daarna met n=2. Lukt dat? Zie je dat het programma recursief werkt? Het roept zichzelf opnieuw op (voor n>1).
"Malgré moi, l'infini me tourmente." (Alfred de Musset)
-
- Berichten: 2.589
Re: Getallen van Fibonacci berekenen.
Het programma roept zijn eigen idd recursief op. Toch zie ik niet hoe die twee variablen temp1 en temp2 werken.
- Berichten: 24.578
Re: Getallen van Fibonacci berekenen.
Heb je eens geprobeerd er (in je hoofd) door te gaan voor n = 2? Dan worden temp1 en temp2 gebruikt, misschien zie je dan in hoe/waarom. Zoals je weet is fib(n) = fib(n-1)+fib(n-2) voor n>1, temp1 en temp2 worden precies gebruikt om je huidig getal te berekenen als som van de twee voorgaande.
"Malgré moi, l'infini me tourmente." (Alfred de Musset)
-
- Berichten: 2.589
Re: Getallen van Fibonacci berekenen.
Ik heb het nog eens geprobeerd en zie nu dat men in result wegschrijft en zo ook in temp1 en analoog voor temp2.
Maar hoe wordt de globale parameter result dan bereikt? hellemaal op het laatste schrijft de functie in result maar dat is dan toch de parameter waarmee de functie word opgeroepen en niet degene die hellemaal bovenaan in de eerste lijn gedefinieerd is? Groeten.
Maar hoe wordt de globale parameter result dan bereikt? hellemaal op het laatste schrijft de functie in result maar dat is dan toch de parameter waarmee de functie word opgeroepen en niet degene die hellemaal bovenaan in de eerste lijn gedefinieerd is? Groeten.
-
- Berichten: 7.068
Re: Getallen van Fibonacci berekenen.
Even terzijde: het programma is hopeloos complex geschreven. Ze hadden beter het volgende kunnen doen:
Dan is het in ieder geval veel duidelijker wat er gebeurt.
Code: Selecteer alles
int fib(int n) {
if (n < 2) {
return 1;
}
return (fib(n-1) + fib(n-2));
}
void main(void) {
int result;
result = fib(4);
}
Die wordt meegegeven als referentie in main.Maar hoe wordt de globale parameter result dan bereikt?
-
- Berichten: 2.589
Re: Getallen van Fibonacci berekenen.
Bedankt voor je code.
Maar hoe wordt in het oorspronkelijke de globale variable aangesproken?
Maar hoe wordt in het oorspronkelijke de globale variable aangesproken?
-
- Berichten: 7.068
Re: Getallen van Fibonacci berekenen.
Die wordt meegegeven als referentie in main.Maar hoe wordt in het oorspronkelijke de globale variable aangesproken?
- Berichten: 4.810
Re: Getallen van Fibonacci berekenen.
Bedenk ook dat dit het schoolvoorbeeld bij uitstek is om aan te tonen dat recursie niet altijd efficiënt is.
- Berichten: 5.679
Re: Getallen van Fibonacci berekenen.
Het wordt er trouwens ook niet duidelijker op doordat in deze code voor zowel het globale resultaat als voor het functie-argument een variabele "result" wordt gebruikt. Want die twee hebben niets met elkaar te maken.
In theory, there's no difference between theory and practice. In practice, there is.
- Berichten: 829
Re: Getallen van Fibonacci berekenen.
Omdat in vele talen, een int standaard de waarde 0 krijgt.Bert F schreef:Volgend programma zou de getallen van fabonacci moeten kunnen berekenen alleen zie ik niet goed hoe?
Men heeft twee variabelen temp1 en temp2 deze initialiseert men nooit toch telt men ze op een gegeven moment op hoe kan dat? Ziet er iemand hoe dit kan werken? Groeten.
"Als je niet leeft zoals je denkt, zul je snel gaan denken zoals je leeft."
--Vladimir Lenin-- (Владимир Ильич Ульянов)
--Vladimir Lenin-- (Владимир Ильич Ульянов)
- Berichten: 5.679
Re: Getallen van Fibonacci berekenen.
Heeft er in dit geval niks mee te maken, aan die temp1 en temp2 wordt gewoon netjes een waarde toegekend (in het volgende recursieniveau) en daarna pas opgeteld.Omdat in vele talen, een int standaard de waarde 0 krijgt.
Ze expliciet initiëren (ongeacht met welke waarde) zou zelfs tot een compiler warning "variable is assigned a value that is never used" ofzoiets kunnen leiden.
In theory, there's no difference between theory and practice. In practice, there is.