hier findet man das:
Delphi-Quellcode:
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;
und
Delphi-Quellcode:
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;
@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)
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)