11 循环和递归

Emacs Lisp 有两种主要的方式来使一个表达式或一系列表达式被重复地评估:一种使用 while 循环,另一种使用 递归

重复可以是非常有价值的。例如,要前进四个句子,你只需要编写一个程序,该程序将前进一句,然后重复这个过程四次。由于计算机不会感到无聊或疲劳,这种重复的动作不会像对人类可能有害的过度或错误的重复那样产生不良影响。

大多数人使用 while 循环及其类似物来编写 Emacs Lisp 函数;但你也可以使用递归,它提供了一种非常强大的思考和解决问题的方式12


Footnotes

(12)

你可以编写递归函数,让其在使用心智或计算资源时既节俭又浪费;实际上,人们发现易于使用——对心智资源节俭的方法——有时会使用相当多的计算资源。Emacs 设计用于运行在我们现在认为有限的机器上,其默认设置是保守的。你可能需要增加 max-lisp-eval-depth 的值。在我的 .emacs 文件中,我将其设置为默认值的30倍。