Repeating Operations

In this tutorial we will show how to do operations a specified number of times. In computing, this is referred to as iteration.

Repeating a specified number of times

Suppose we want to write a function to repeatedly print a string a fixed number of times. We could write a recursive definition to solve this:

To repeatedly print a string n times:

  • If n is 0 do nothing
  • Otherwise print the string, and then repeatedly print the string n-1 times.

Here's this expressed as a Lisp function:

(defun print-times (n)
  (if (= 0 n) nil
    (progn
      (print "Hello")
      (print-times (- n 1)))))

To get "Hello" printed five times call:

(print-times 5)

Repeating for a range of numbers

The previous example counts down the value of n from the starting value to zero. We often want to perform an operation for a range of values; for example, we might want to print the squares of the numbers from 15 to 20. Here's the recursive definition:

To print between from and to inclusive:

  • If from is larger than to do nothing
  • Otherwise print the string, and then print between from+1 and to.

Here it is in Lisp:

(defun print-for (from to)
  (if (> from to) nil
    (progn
      (format t "~a^2 = ~a~%" from (* from from))
      (print-for (+ from 1) to))))

Finally, let's test it out:

CL-USER > (print-for 15 20)
15^2 = 225
16^2 = 256
17^2 = 289
18^2 = 324
19^2 = 361
20^2 = 400
NIL

blog comments powered by Disqus