Einsendung:

Lösungsvorschlag (iterativ):

Zur letzen Übung: War schon etwas happig (das Denken kam zu plötzlich), ließ sich aber nach kurzem Nachdenken lösen. Hier mein Vorschlag:

int fibIt(int n)
{
   int result=1;
   int speicher1=1;
   int speicher2=1;
   if (n>3)
   {
      for(int i=3;i<=n;i=i+1)
      {
         result=speicher1+speicher2;
         speicher1=speicher2;
         speicher2=result;
      };
   };

   return result;
};

Ihre Funktion gibt aus: 1, 1, 1, 3, 5, 8,...
Richtig wäre: 1, 1, 2, 3, 5, 8,...
Ihr if(n>3) ist falsch. Richtig wäre if(n>=3). Wenn man sich jetzt mal die for-Schleife genau anschaut, dann sieht man, daß sie nur ausgeführt wird, wenn n>=3. Deshalb können Sie also das if auch ganz weglassen!

Danke!
Ich hatte die Funktion getestet mit:

   if (n<3)
   {
      result=1;
   }
   else
   {...

Dann habe ich mir überlegt, daß man result ja schon bei der Deklaration eine 1 zuweisen kann und nach dem Umstricken habe ich es wohl nicht mehr gründlich genug getestet...



Falls Ihnen Fehler im Text auffallen oder Sie Verbesserungsvorschläge haben, dann schicken Sie mir bitte eine Mail. Ich werde mich dann sofort darum kümmern.
[aktuelle Version] [inhalt] [index]      [Fehlerkorrektur, Verbesserungsvorschlag]

© Volkard Henkel <volkard@normannia.de>, last update: 08/25/00