;; (! n): natNum --> num ;; Given n, return n*(n-1)*...*2*1. ;; (define (! n) (cond [(zero? n) 1] [else (* n (! (sub1 n)))])) "! Test cases:" ; (= 2 (! 2)) (= 6 (! 3)) (= 1 (! 0)) ;; rabbits: natnum num --> num ;; calculates the number of rabbits after n breeding cycles ;; assuming that each rabbit has b offspring on average ;; Start with 2 rabbits ;; Assume no deaths. (define (rabbits n b) (cond [(zero? n) 2] [else (* (+ 1 b) (rabbits (sub1 n) b))])) "Rabbits test cases:" (= 2 (rabbits 0 2)) (= 4 (rabbits 1 1)) (= 8 (rabbits 1 3)) (= 6250 (rabbits 5 4))