在前一节中描述的 triangle
函数也可以使用递归方式编写。它的代码如下:
(defun triangle-recursively (number) "返回从1到NUMBER(包括NUMBER)的数字之和,使用递归。" (if (= number 1) ; 再做一次测试 1 ; 然后部分 (+ number ; 否则部分 (triangle-recursively ; 递归调用 (1- number))))) ; 下一步表达式 (triangle-recursively 7)
你可以通过评估这个函数来安装它,并通过评估 (triangle-recursively 7)
来尝试它。(记得把光标放在函数定义的最后一个括号之后,注释之前。)这个函数的值为28。
为了理解这个函数的工作原理,让我们考虑当函数的参数值为1、2、3或4时发生的各种情况。