Bert F
Artikelen: 0
Berichten: 2.589
Lid geworden op: vr 15 aug 2003, 20:37

Getallen van Fibonacci berekenen.

Volgend programma zou de getallen van fabonacci moeten kunnen berekenen alleen zie ik niet goed hoe?

Afbeelding

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.
EvilBro
Artikelen: 0
Berichten: 7.081
Lid geworden op: vr 30 dec 2005, 09:45

Re: Getallen van Fibonacci berekenen.

Volgend programma zou de getallen van fabonacci moeten kunnen berekenen alleen zie ik niet goed hoe?
Weet je wat een referentie is?
Bert F
Artikelen: 0
Berichten: 2.589
Lid geworden op: vr 15 aug 2003, 20:37

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?
Gebruikersavatar
TD
Artikelen: 0
Berichten: 24.578
Lid geworden op: ma 09 aug 2004, 17:31

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)
Bert F
Artikelen: 0
Berichten: 2.589
Lid geworden op: vr 15 aug 2003, 20:37

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.
Gebruikersavatar
TD
Artikelen: 0
Berichten: 24.578
Lid geworden op: ma 09 aug 2004, 17:31

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)
Bert F
Artikelen: 0
Berichten: 2.589
Lid geworden op: vr 15 aug 2003, 20:37

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.
EvilBro
Artikelen: 0
Berichten: 7.081
Lid geworden op: vr 30 dec 2005, 09:45

Re: Getallen van Fibonacci berekenen.

Even terzijde: het programma is hopeloos complex geschreven. Ze hadden beter het volgende kunnen doen:

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);

}
Dan is het in ieder geval veel duidelijker wat er gebeurt.
Maar hoe wordt de globale parameter result dan bereikt?
Die wordt meegegeven als referentie in main.
Bert F
Artikelen: 0
Berichten: 2.589
Lid geworden op: vr 15 aug 2003, 20:37

Re: Getallen van Fibonacci berekenen.

Bedankt voor je code.

Maar hoe wordt in het oorspronkelijke de globale variable aangesproken?
EvilBro
Artikelen: 0
Berichten: 7.081
Lid geworden op: vr 30 dec 2005, 09:45

Re: Getallen van Fibonacci berekenen.

Maar hoe wordt in het oorspronkelijke de globale variable aangesproken?
Die wordt meegegeven als referentie in main.
Bert F
Artikelen: 0
Berichten: 2.589
Lid geworden op: vr 15 aug 2003, 20:37

Re: Getallen van Fibonacci berekenen.

tuurlijk Bedankt.
Gebruikersavatar
Cycloon
Artikelen: 0
Berichten: 4.810
Lid geworden op: ma 24 jan 2005, 20:56

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.
Gebruikersavatar
Rogier
Artikelen: 0
Berichten: 5.679
Lid geworden op: di 27 apr 2004, 13:40

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.
Gebruikersavatar
Vladimir Lenin
Artikelen: 0
Berichten: 829
Lid geworden op: do 25 sep 2008, 14:15

Re: Getallen van Fibonacci berekenen.

Bert F schreef:Volgend programma zou de getallen van fabonacci moeten kunnen berekenen alleen zie ik niet goed hoe?

Afbeelding

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.
Omdat in vele talen, een int standaard de waarde 0 krijgt.
"Als je niet leeft zoals je denkt, zul je snel gaan denken zoals je leeft."

--Vladimir Lenin-- (Владимир Ильич Ульянов)
Gebruikersavatar
Rogier
Artikelen: 0
Berichten: 5.679
Lid geworden op: di 27 apr 2004, 13:40

Re: Getallen van Fibonacci berekenen.

Omdat in vele talen, een int standaard de waarde 0 krijgt.
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.

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.

Terug naar “Informatica en programmeren”