Clojure is a functional programming language that promotes functional programming style. In functional programming, functions are the fundamental building blocks rather than program instructions. Pure functions depend only on their parameters and return a value without side effects. Clojure supports defining functions using defn, anonymous functions, and higher-order functions. Functions can be composed together and curried to create new functions. Recursion is natural in functional programming through expressions like recursion without modifying state.