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====