在LispWorks中进行编程15:重复操作
Category:UI界面编写重复操作
在本教程中,我们将展示如何执行指定次数的操作。在计算中,这被称为迭代。
重复指定的次数
假设我们要编写一个函数来重复打印一个字符串固定次数。我们可以写一个递归定义来解决这个问题:
要重复打印一次字符串n次:
- 如果n为0则什么也不做
- 否则打印字符串,然后重复打印字符串n-1次。
这是以Lisp函数表示的:
(defun print-times (n) (if (= 0 n) nil (progn (print “Hello”) (print-times (- n 1)))))
要打印“Hello”打五次电话:
(print-times 5)
重复一系列数字
前面的示例将n的值从起始值倒计数到零。我们经常想要对一系列值执行操作; 例如,我们可能想要打印从15到20的数字的方块。这是递归定义:
要打印之间的距离,并以包容性的:
- 如果从大于对什么都不做
- 否则打印字符串,然后打印之间从+ 1和到。
这是在Lisp中:
(defun print-for (from to) (if (> from to) nil (progn (format t “~a^2 = ~a~%” from (* from from)) (print-for (+ from 1) to))))
最后,让我们测试一下:
CL-USER > (print-for 15 20)15^2 = 22516^2 = 25617^2 = 28918^2 = 32419^2 = 36120^2 = 400NIL
http://mip.i3geek.com