AuK/Dynamisches Programmieren SS09/Loesungen
Aus ProgrammingWiki
Wiki-Quelltext dieser Seite.
==Fibonacci-Zahl==
===C#===
====ohne Memoizing====
<code>
private int Fib(int n)
{
if (n < 2)
{
return 1;
}
else
{
return (Fib(n - 1) + Fib(n - 2));
}
}</code>
====mit Memoizing====
<code>
private Dictionary<int, Int64> fibs = new Dictionary<int, Int64>();
private Int64 FibM(int n)
{
if (fibs.ContainsKey(n))
{
Int64 v = 0;
fibs.TryGetValue(n, out v);
return v;
}
else
{
if (n < 2)
{
return 1;
}
else
{
Int64 fibA = FibM(n - 1);
fibs.Add(n - 1, fibA);
Int64 fibB = FibM(n - 2);
return fibA + fibB;
}
}
}
</code>
===F#===
====ohne Memoizing====
<code>
let rec fib(n) = (
if n < 2 then 1
else
begin
(fib(n-1) + fib(n-2))
end
)
</code>
====mit Memoizing====