Which of the following is NOT a characteristic of functional programming languages?
Functions can take other functions as arguments and return them as results
Algorithms are expressed in natural mathematical terms rather than as procedural steps
Every function must modify some kind of state - either within the machine or in the outside world
Recursion is encouraged