001
27.09.2012, 10:39 Uhr
ao
(Operator)
|
Er ist falsch. Spiele ihn Schritt für Schritt durch für
b = irgendwas (z.B. 2) und n = 1.
Du wirst merken: Wenn du die Abbruchbedingung zum 1. Mal prüfst, ist i schon inkrementiert und steht auf 2. Die Bedingung ist nicht erfüllt, und du kommst in eine Quasi-Endlosschleife, die nur deshalb doch noch abbricht, weil i irgendwann überläuft.
Abhilfen: 1. Abweisende Schleife verwenden (Bedingung beim Eintritt, nicht beim Austritt) 2. Bei i = 0 anfangen. Das kostet zur Laufzeit praktisch nichts, und über Sonderfälle nachdenken zu müssen ist immer schlecht.
Was auch nicht geht: n < 0. Ist zum Üben nicht tragisch, muss dir aber bewusst sein. Du solltest alles, womit der Algo nicht umgehen kann, zu Beginn abfangen. |