Ich hätte auch noch eine rekursive Version auf Lager, die ohne das zusätzliche Feld auskommt:
Code:
private uint fib(uint n)
{
if (n == 0)
return 0;
else
return fib(n, 1, 0);
}
private uint fib(uint n, uint x, uint y)
{
if (n == 1)
return x;
else
return fib(n - 1, x + y, x);
}
Berechnet keine Ergebnisse doppelt, und sollte von der Laufzeit her mit einer iterativen Version mithalten können.