Scheme

Aus ProgrammingWiki

Wiki-Quelltext dieser Seite.

<language></language>
<language></language>
===Fibonacci-Berechnung 1===

<code>(define fib
  (lambda (n)
    (if (< n 2)
         1
         (+ (fib (- n 1)) (fib (- n 2))))))</code>
<eval>

(fib 5)

</eval>

===Fibonacci-Berechnung 2===

<code rows="20" cols="90">(define fib-memo

  (let ((fib-memoliste '()))

    (lambda (n)

      (let ((rek-aufrufe 0))

        (letrec

          ((fib-memo-hilf

             (lambda (n)

               (let ((memowert (assoc (list n) fib-memoliste)))

                 (if memowert

                     (cdr memowert)

                     (let ((resultat (fib-hilf n)))

                       (set! fib-memoliste (cons (cons (list n) resultat) fib-memoliste))

                       resultat)))))

           (fib-hilf

             (lambda (n)

               (set! rek-aufrufe (+ rek-aufrufe 1))

               (if (< n 2)

                   1

                   (+ (fib-memo-hilf (- n 1)) (fib-memo-hilf (- n 2)))))))

          (list n (fib-hilf n) rek-aufrufe))))))

</code>

<eval cols="90">(fib-memo 100)</eval>