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>