Delphi-PRAXiS
Seite 3 von 4     123 4      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Fibonacci-Zahlen (https://www.delphipraxis.net/43959-fibonacci-zahlen.html)

leddl 11. Apr 2005 17:18

Re: Fibonacci-Zahlen
 
Kanns bei mir nich compilieren, deshalb kann ich nich viel dazu sagen, aber was meinst du mit "hängen"? Brauchts nur lange oder hängt sich das Programm auf? Also mein Code funktioniert bei mir einwandfrei und selbst mit etwas höheren Zahlen merkt man keinen Hänger...

Binärbaum 11. Apr 2005 17:25

Re: Fibonacci-Zahlen
 
Zitat:

Zitat von glkgereon
irgendwie hängen die asm und die rekursive ziemlich!!!

oder mach ich was falsch?

irgendwie funkt das net :(

Bei der rekursiven Funktion kann das an der Rekursion liegen. Dadurch, das bei großen Zahlen die Funktion ziemlich oft rekursiv aufgerufen wird, kann es schon mal etwas länger dauern. Deswegen bevorzuge ich auch iterative Verfahren ;-)

MfG
Binärbaum

glkgereon 11. Apr 2005 17:34

Re: Fibonacci-Zahlen
 
naja, also ab 50 etwa brauchs deutlich mehr als 1-2 sek....so lang das ich abgebrochen hab.

aber die asm-lösung auch :gruebel:

leddl 11. Apr 2005 17:37

Re: Fibonacci-Zahlen
 
Ok, habs jetzt mal selbst getestet. Der rekursive Aufruf hinkt wirklich ab ca. 30 deutlichst hinterher. Wohl doch wirklich nich so gut. ;)

Khabarakh 11. Apr 2005 17:48

Re: Fibonacci-Zahlen
 
Ist doch logisch:
Code:
 -> = ruft auf
5. Fibonacci-Zahl

Rekursiv:


 
               2
          3 ->
               1
     4 ->

          2

5 ->
          2

     3 ->

          1

iterativ:

 2+1 -> 3 -> 4 -> 5
Und das ist erst die fünfte :stupid: .

Binärbaum 11. Apr 2005 17:55

Re: Fibonacci-Zahlen
 
Man könnte die rekursive Variante noch verbessern (d.h. schneller machen), wenn man die schon berechneten Zwischenergebnisse speichert. Allerdings hat man dadurch wieder mehr Overhead, sodass letztlich dieser wieder den Performance-Gewinn dämpft.

MfG
Binärbaum

JasonDX 11. Apr 2005 18:04

Re: Fibonacci-Zahlen
 
ich hab den asm-code nochmal angeguckt

wenn ich die funktion einmal aufrufe, reicht das:
Delphi-Quellcode:
function fib(von: integer): integer; assembler;
asm
  mov ecx, von
  mov eax, 1
  mov ebx, 0
  cmp ecx, 2
  jbe @@endoffib
  sub ecx, 1
 @@startLoop:
  mov edx, ebx
  mov ebx, eax
  add eax, edx
  sub ecx, 1
  jnz @@startLoop
 @@endoffib:
  mov result, eax
end;

wenn ich sie in einer for-schleife aufruf, muss ich

Delphi-Quellcode:
//Das am anfang:
  push eax
  push ebx
  push ecx
  push edx

//und das am ende:
  pop edx
  pop ecx
  pop ebx
  pop eax
anhängen :?:


Edit: source ausgebessert

negaH 11. Apr 2005 18:14

Re: Fibonacci-Zahlen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hier mal ein Program von mir.

Gruß Hagen

glkgereon 11. Apr 2005 18:16

Re: Fibonacci-Zahlen
 
würdest du event. auch den source veröffentlichen?

BenjaminH 11. Apr 2005 18:17

Re: Fibonacci-Zahlen
 
[ot]@negaH Was wohl passiert wenn ich da -3 eingeb ;-) [/ot]
[Edit] Was ich eigentlich meine ist, das jede dieser funktionen vielleicht noch eine überprüfung zur gültigkeit des Indexes braucht
[Edit=2] Jetzt weiß ich was passiert :-( nach einiger Zeit war der PC nicht mehr ansprechbar


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:38 Uhr.
Seite 3 von 4     123 4      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz