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.