Info Node: (emacs-lisp-intro.info)Dec Example parts
(emacs-lisp-intro.info)Dec Example parts
The parts of the function definition
....................................
We start with three variables: the total number of rows in the
triangle; the number of pebbles in a row; and the total number of
pebbles, which is what we want to calculate. These variables can be
named `number-of-rows', `number-of-pebbles-in-row', and `total',
respectively.
Both `total' and `number-of-pebbles-in-row' are used only inside the
function and are declared with `let'. The initial value of `total'
should, of course, be zero. However, the initial value of
`number-of-pebbles-in-row' should be equal to the number of rows in the
triangle, since the addition will start with the longest row.
This means that the beginning of the `let' expression will look like
this:
(let ((total 0)
(number-of-pebbles-in-row number-of-rows))
BODY...)
The total number of pebbles can be found by repeatedly adding the
number of pebbles in a row to the total already found, that is, by
repeatedly evaluating the following expression:
(setq total (+ total number-of-pebbles-in-row))
After the `number-of-pebbles-in-row' is added to the `total', the
`number-of-pebbles-in-row' should be decremented by one, since the next
time the loop repeats, the preceding row will be added to the total.
The number of pebbles in a preceding row is one less than the number
of pebbles in a row, so the built-in Emacs Lisp function `1-' can be
used to compute the number of pebbles in the preceding row. This can be
done with the following expression:
(setq number-of-pebbles-in-row
(1- number-of-pebbles-in-row))
Finally, we know that the `while' loop should stop making repeated
additions when there are no pebbles in a row. So the test for the
`while' loop is simply:
(while (> number-of-pebbles-in-row 0)