AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Fibonacci-Zahlen

Ein Thema von glkgereon · begonnen am 11. Apr 2005 · letzter Beitrag vom 26. Mai 2008
Antwort Antwort
Seite 3 von 4     123 4      
Benutzerbild von leddl
leddl

Registriert seit: 13. Okt 2003
Ort: Künzelsau
1.613 Beiträge
 
Delphi 2006 Professional
 
#21

Re: Fibonacci-Zahlen

  Alt 11. Apr 2005, 18:18
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...
Axel Sefranek
A programmer started to cuss, cause getting to sleep was a fuss.
As he lay there in bed, looping round in his head
was: while(!asleep()) ++sheep;
  Mit Zitat antworten Zitat
Benutzerbild von Binärbaum
Binärbaum

Registriert seit: 19. Jan 2005
Ort: Elstra
764 Beiträge
 
Delphi 7 Enterprise
 
#22

Re: Fibonacci-Zahlen

  Alt 11. Apr 2005, 18:25
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
There are exactly 10 kinds of people: those who understand binary, and those who don't.
---
"Software reift beim Kunden. Bei Hardware ist es anders: Hardware fault beim Kunden." - Rainer G. Spallek
  Mit Zitat antworten Zitat
Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#23

Re: Fibonacci-Zahlen

  Alt 11. Apr 2005, 18:34
naja, also ab 50 etwa brauchs deutlich mehr als 1-2 sek....so lang das ich abgebrochen hab.

aber die asm-lösung auch
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat
Benutzerbild von leddl
leddl

Registriert seit: 13. Okt 2003
Ort: Künzelsau
1.613 Beiträge
 
Delphi 2006 Professional
 
#24

Re: Fibonacci-Zahlen

  Alt 11. Apr 2005, 18:37
Ok, habs jetzt mal selbst getestet. Der rekursive Aufruf hinkt wirklich ab ca. 30 deutlichst hinterher. Wohl doch wirklich nich so gut.
Axel Sefranek
A programmer started to cuss, cause getting to sleep was a fuss.
As he lay there in bed, looping round in his head
was: while(!asleep()) ++sheep;
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#25

Re: Fibonacci-Zahlen

  Alt 11. Apr 2005, 18:48
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 .
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Benutzerbild von Binärbaum
Binärbaum

Registriert seit: 19. Jan 2005
Ort: Elstra
764 Beiträge
 
Delphi 7 Enterprise
 
#26

Re: Fibonacci-Zahlen

  Alt 11. Apr 2005, 18:55
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
There are exactly 10 kinds of people: those who understand binary, and those who don't.
---
"Software reift beim Kunden. Bei Hardware ist es anders: Hardware fault beim Kunden." - Rainer G. Spallek
  Mit Zitat antworten Zitat
Benutzerbild von JasonDX
JasonDX
(CodeLib-Manager)

Registriert seit: 5. Aug 2004
Ort: München
1.062 Beiträge
 
#27

Re: Fibonacci-Zahlen

  Alt 11. Apr 2005, 19:04
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
Mike
Passion is no replacement for reason
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#28

Re: Fibonacci-Zahlen

  Alt 11. Apr 2005, 19:14
Hier mal ein Program von mir.

Gruß Hagen
Angehängte Dateien
Dateityp: exe fib_143.exe (180,5 KB, 24x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#29

Re: Fibonacci-Zahlen

  Alt 11. Apr 2005, 19:16
würdest du event. auch den source veröffentlichen?
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat
BenjaminH

Registriert seit: 14. Okt 2004
Ort: Freiburg im Breisgau
713 Beiträge
 
Turbo Delphi für Win32
 
#30

Re: Fibonacci-Zahlen

  Alt 11. Apr 2005, 19:17
[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
Benjamin
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 4     123 4      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:33 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz