37 lines
736 B
Markdown
37 lines
736 B
Markdown
# Lösung: Was hoppelt den da?
|
|
|
|
|
|
```clojure
|
|
#!/usr/bin/env -S clojure -M
|
|
|
|
(def generationen 14)
|
|
|
|
(defn fib
|
|
"Berechnet die Fibonacci-Zahl nach `n` Schritten."
|
|
[n]
|
|
{ :pre [(>= n 0)]
|
|
:post [(>= % 0)] }
|
|
(loop [n_2 0 n_1 1 step n]
|
|
(cond
|
|
(= step 0)
|
|
n_2
|
|
:else
|
|
(recur n_1 (+ n_2 n_1) (dec step)))))
|
|
|
|
(defn fibs
|
|
"Berechnet alle Fibonacci-Zahlen bis `n` einschießlich
|
|
und gibt sie als Vektor zurück."
|
|
[n]
|
|
{ :pre [(>= n 0)] }
|
|
|
|
(let [v (range (inc n))]
|
|
(map #(fib %) v)))
|
|
|
|
(defn kaninchen
|
|
[]
|
|
(println "Nach" generationen "Generationen haben wir" (fib generationen) "Kaninchen")
|
|
(println "Die Population entwickelt sich so:" (fibs generationen)))
|
|
|
|
(kaninchen)
|
|
|
|
``` |