#lang racket (require srfi/1) (define (p n) (let lp ((i 1) (ls '(1))) (cond ((>= i n) (car ls)) ((< i 7) (lp (+ i 1) (cons (* 5/6 (car ls)) ls))) (else (lp (+ i 1) (cons (/ (+ (seventh ls) (* 5 (car ls))) 6) (take ls 6))))))) (define p100 (p 100)) p100 ; => 54443218649389348716498209861047618553904558871554859532791938833224449355325/108886437250011817682781711193009636756190618412159145257178661061582856912896 (exact->inexact p100) ; => 0.5000000002239345