Because Lisp is a functional language, Lisp programs often use recursion to solve problems. Here is a Scheme program that finds the factorial of a number. The function (factorial n) starts by testing if formula_2 or not. If formula_3, then (factorial 0) is 1. If formula_4, then (factorial n) returns the product of formula_5 and the factorial of formula_6.