If you take a purely determinate function and iterate it over time difficult-to-predict behavior can emerge. If you only use the same function, then the outcome is easily determined and therefore not complex. But if you use more than one determinate function or a set of rules with simple determinate functions then difficult-to-predict behavior may emerge.
In order to begin to understand complexity, we need to discover what complexity is not. Complexity is the region between the polar opposites, Determinate and Probabilistic. Something determinate can be predicted with certainty. Something probabilistic can be predicted within some statistical bounds (like the flipping of a coin). While complexity includes elements of both of these, it is neither determinate nor probabilistic.