11 循环与递归

Emacs Lisp 有两种主要方式可以重复执行一个或一系列表达式: 一种使用 while 循环, 另一种使用 递归(recursion)

重复执行非常有用。例如,要向前移动四个句子, 只需编写程序实现“向前移动一个句子”并重复四次即可。 计算机不会感到枯燥或疲惫,因此这类重复操作 不会像对人那样产生过度或不当重复带来的负面影响。

人们编写 Emacs Lisp 函数时大多使用 while 循环 及其同类结构;但你也可以使用递归, 递归提供了一种非常强大的思考与解决问题的方式15


Footnotes

(15)

编写递归函数时,可以选择节省或消耗计算与心智资源。 有趣的是,人类易于理解、节省心智的写法, 有时会占用较多计算机资源。Emacs 设计之初运行在 如今看来配置有限的机器上,默认设置较为保守。 你可能需要增大 max-lisp-eval-depth 的值。 我在 .emacs 文件中将其设为默认值的 30 倍。