USING: kernel sequences math locals ; : mid-depth-clone ( seq -- seq' ) [ clone ] map ; :: [recur-quot] ( vals quot -- quot' ) [ vals first2 quot call vals second 0 vals set-nth 1 vals set-nth ] ; inline ! quots should be ( a[n-1] a[n] -- a[n+1] ) :: 2-recurrence ( n start-vals quots -- end-vals ) start-vals mid-depth-clone dup quots [ [recur-quot] ] 2map [ n ] dip [ over 0 > ] [ [ 1 - ] [ dup [ call ] each ] bi* ] while 2drop ; inline ! Use like ! 10 { { 1 1 } } { [ + ] } 2-recurrence .