Prev Up Next
A procedure body can contain calls to other procedures,
not least itself:
(define factorial
(lambda (n)
(if (= n 0) 1
(* n (factorial (- n 1))))))
This recursive procedure calculates the factorial of a number. If the number is 0, the
answer is 1. For any other number n, the
procedure uses itself to calculate the factorial of
n - 1, multiplies that subresult by n, and
returns the product.
Mutually recursive procedures are also possible. The
following predicates for evenness and oddness use each
other:
(define is-even?
(lambda (n)
(if (= n 0) #t
(is-odd? (- n 1)))))
(define is-odd?
(lambda (n)
(if (= n 0) #f
(is-even? (- n 1)))))
Prev Up Next