This repository has been archived on 2022-08-10. You can view files and clone it, but cannot push or open issues or pull requests.
chez-openbsd/ta6ob/examples/fatfib.ss

20 lines
458 B
Scheme
Raw Normal View History

2022-08-09 23:28:25 +02:00
;;; fat fibonacci function
;;; this is "fat" because it uses only increments and decrements
;;; for addition and subtraction (i.e., peano arithmetic).
;;; note that fat+ is tail-recursive; this is how all looping is
;;; performed in Scheme.
(define fat+
(lambda (x y)
(if (zero? y)
x
(fat+ (1+ x) (1- y)))))
(define fatfib
(lambda (x)
(if (< x 2)
1
(fat+ (fatfib (1- x)) (fatfib (1- (1- x)))))))