![]() |
Re: Fibonacci-Zahlen
Zitat:
![]() Ich frag mich warum Daniel wohl den wiki-Button eingebaut hat ;) Greetz alcaeus |
Re: Fibonacci-Zahlen
Zitat:
![]() MfG Binärbaum |
Re: Fibonacci-Zahlen
Ob for-Schleife oder rekursiv. Aber auf jeden Fall sollte das gleiche Ergebnis rauskommen. Tuts in diesem Fall aber nicht :mrgreen:
Also irgendwer hat sich da wohl vertan. |
Re: Fibonacci-Zahlen
So wie ich das sehe (experimentiert) ist das von Leddl richtig :thumb:
|
Re: Fibonacci-Zahlen
Zitat:
Delphi-Quellcode:
Keine Rekursion und keine Schleife, sondern reine Mathematik.
function fibonacci(Index : Integer) : Int64;
begin result := round((1/sqrt(5))*(power((1+sqrt(5))/2, index-1)-power((1-sqrt(5))/2,index-1))); end; Edit: Diese Version geht davon aus, dass die Fibonacci-Zahlenreihenfolge bei 0 und nicht bei 1 beginnt. (Definitionssache je nach Problemstellung) |
Re: Fibonacci-Zahlen
Hehe, da sieht man wieder, was Rekursion so alles bringen kann. Das Ergebnis kann - schon wenn man nur einen Blick auf den Code wirft - eigentlich nur richtig sein.
Und besser langsam und richtig, als schnell und falsch! ;) Das Problem an glkgereon's Code ist, daß nach dem ersten Aufruf Last immer gleich Result ist, und somit Result immer einfach nur verdoppelt wird. Aber das ist eben in so ner Schleife nicht sofort zu erkennen. Aber das hatte mich heute schon einmal irritiert. |
Re: Fibonacci-Zahlen
So,
jetzt habt ihr den Thread so schön zerredet das die lieben Code-Manager sicher nicht mehr wissen was sie nun in die Code-Library aufnhemen sollen und was nicht :roll: Herzlichen Glückwunsch |
Re: Fibonacci-Zahlen
![]()
Delphi-Quellcode:
und
procedure Fibonacci(von: integer): int64;
var alt, uralt: int64; i: integer; begin alt := 0; result := 1; for i := 2 to von do begin uralt := alt; alt := result; result := uralt + alt; end; end;
Delphi-Quellcode:
@Elite: Ich weiß nicht mehr genau, aber wird die Formel nach ziemlich großen Zahlen nicht etwas ungenau? (Ich weiß bloß noch, dassma mal durch Annäherung was ähnliches rausgekriegt ham)
procedure Fibonacci(von: integer): integer;
asm MOV EDX, von SUB EDX, 1 MOV EAX, 0 //alt MOV EBX, 1 //neu JZ @@end @@1: MOV ECX, EAX MOV EAX, EBX MOV EBX, EAX ADD EBX, ECX SUB EDX, 1 CMP EDX, 1 JAE @@1 @@end: MOV result, EBX end; Und durch ein inc(Index) dürft das Problem mit Beginn bei 0 oder 1 geklärt sein ;) @Sharky: Man kann ja alle 4 Versionen hinzufügen (Rekursiv, Iterativ, Iterativ ASM und Formel) :zwinker: |
Re: Fibonacci-Zahlen
ok, also meins funzt jetzt auch.
ich werd, wenns recht is, die versionen in nem neuen thread nochmal reinstellen. werd alle eigentlichen autoren nennen, und'n performance-test machen vorher. das asm endet imho in ner endlosschleife....mein prog hängt sich dabei einfach auf... |
Re: Fibonacci-Zahlen
Liste der Anhänge anzeigen (Anzahl: 1)
irgendwie hängen die asm und die rekursive ziemlich!!!
oder mach ich was falsch? irgendwie funkt das net :( |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:44 Uhr. |
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