Code:
function fiboit(n:integer):int64; // iterativ
var f1,f2:int64;
begin
result := 1;
f1 := 1;
f2 := 1;
for n := 3 to n do
begin
result := f1 + f2;
f1 := f2;
f2 := result;
end;
end;
function fiborek(n:integer):int64; // rekursiv
begin
if (n=1) or (n=2) then
result := 1
else
result := fiborek(n-1) + fiborek(n-2);
end;
Ich habe da eine einfache Frage, nämliche habe ich zwei Problemlösungen entworfen um ein n-tes Glied der Fibonaccifolge zu berechnen. Die eine ist rekursiv, die andere arbeitet iterativ. Warum läuft die iterative Problemlösung so viel schneller ab? (besonders auffällig bei größerem n, z. B. n = 40) Ist es allgemein ökonomischer iterative Problemlösungen zu verwenden?