Earlier quoted context omitted.
Isn't it just possessing both conditionals and loops?
Not necessarily. Purely functional languages, like Lisp, do not have loops. Instead they have recursion. Any iterative algorithm (I.e. one with loops) can provably be converted to a recursive algorithm with out iteration.
For instance, the do operator:
(do ((i 0 (+ i 1))) ((> i 10)) (print i))
Or the loop macro: (loop for x below 5 and y in '(a b c d e)
collecting (list x y))
The 1965 manual for Lisp 1.5 describes the prog construct, which persists into ANSI CL. Inside prog we can have labeled statements to which we can branch unconditionally with go in any direction. Lisp also has mutable variables. The following example from the Lisp 1.5 Programmer's Manual is still valid code today: (LAMBDA (A)
(PROG (B)
S (SETQ B A)
(COND ((NULL B) (RETURN C)))
(SETQ C (CONS (CAR A) C))
(GO S)))