Notice the require, which opens the trace library and the trace, which allows us to see the calls to factorial.
(#%require racket/trace)
; 6! = 6 * 5 * 4 * 3 * 2 * 1 = 6 * 5!
; n! = n * (n-1) * (n-2) * ... * 1 = n * (n-1)!
; 1! = 1, 0! = 1
; A recursive procedure has two properties:
; 1. It calls itself to solve a problem (recursive call)
; 2. It has a place to stop (base case)
(define (factorial n)
(cond ((< n 2) 1)
(else (* n (factorial (- n 1))))))
(trace factorial)