Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Nicht gewollte Endlosschleife
Bestzeller - Mo 08.06.09 19:07
Titel: Nicht gewollte Endlosschleife
Hi,
Wie schon im Titel genannt, hab ich eine Endlosschleife die eigentlich nicht dar sein dürfte,
da exponent = 0.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| function TBaum.potenz(basis:Integer;exponent:Integer):Integer; VAR ergebnis:Integer; begin If exponent = 0 then result:=1; if exponent = 1 then result:=basis else begin if exponent mod 2 = 0 then begin ergebnis:=potenz(basis, exponent div 2); result:=ergebnis*ergebnis; end else result:=potenz(basis, exponent-1)*basis; end; end; |
Ich hab es schon mit dem Debugger überprüft und für exponent wird auch 0 übergeben und für basis 1 ,
aber irgentwie läuft das Programm trotzdem weiter bis dar, wo bis hier steht. Und nachher gibt es einen Stack-=Overflow.
oki - Mo 08.06.09 19:19
Deine 2. If-Anweisungen ist für den else-Zweig auch gültig, wenn Exponent = 0 ist.
Gruß oki
Bestzeller - Mo 08.06.09 19:33
Thx oki. Hab vergessen das Delphi trotzdem noch weiter schaut.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!