前のセクションで説明した triangle
関数は、再帰的に記述することもできます。次のような形になります。
(defun triangle-recursively (number) "Return the sum of the numbers 1 through NUMBER inclusive. Uses recursion." (if (= number 1) ; do-again-test 1 ; then-part (+ number ; else-part (triangle-recursively ; recursive call (1- number))))) ; next-step-expression (triangle-recursively 7)
この関数は、評価してインストールし、その後 (triangle-recursively 7)
を評価して試すことができます。(関数定義の最後の括弧の直後、コメントの前にカーソルを置くのを忘れないでください。)この関数を評価すると 28
になります。
この関数の仕組みを理解するために、引数の値として 1、2、3、または 4 を渡した場合に、それぞれのケースで何が起こるかを考えてみましょう。