; Saves all results in a list (define (fibcalc1 x) ( if ( = x 1 ) (cons 1 ()) ( if ( = x 2 ) (list 1 1) ( let ((temp ( fibcalc1( - x 1 )) )) ( cons ( + ( car temp) (cadr temp)) temp )) ))) ; Saves only last 2 results using a pair (define (fibcalc2 x) ( if ( = x 1 ) (cons 1 ()) ( if ( = x 2 ) (cons 1 1) ( let ((temp ( fibcalc2( - x 1 )) )) ( cons ( + ( car temp) (cdr temp)) ( car temp)) )))) ; Saves only last 2 results using a list (define (fibcalc3 x) ( if ( = x 1 ) (list 1 ) ( if ( = x 2 ) (list 1 1) ( let ((temp ( fibcalc3( - x 1 )) )) ( list ( + ( car temp) (cadr temp)) ( car temp)) ))))