(define (par-fib n n-forks) (cond ((<= n 1) 1) ((> n-forks 0) (letpar ((f1 (par-fib (- n 1) (- n-forks 1))) (f2 (par-fib (- n 2) (- n-forks 1)))) (+ f1 f2))) (else (let ((f1 (mono-fib (- n 1))) (f2 (mono-fib (- n 2)))) (+ f1 f2))))) (define (mono-fib n) (let iter ((f1 1) (f2 1) (i 1)) (if (>= i n) f2 (iter f2 (+ f1 f2) (+ 1 i)))))