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
                {
                    counter++;
                    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====