递归函数 - 两个函数或最后一个可选参数

Ell*_*Ell 3 language-agnostic recursion naming-conventions

在编写递归函数时,有时会发生某些事情只应在递归算法的第一次通过时发生。如果这是真的,我有两个选择,

  1. 有一个名为“first run”的可选参数,默认情况下设置为 true 但递归调用时,该参数为 false
  2. 有两个功能

哪个选项更可取?如果是后者,我应该如何命名这些函数?(例如,如果它的洪水填充算法将我选择FloodFillFloodFillRecursive?)

提前致谢,嗯。

Pas*_*TIN 5

我可能会使用两个函数,我会说将被调用的函数应该命名为FloodFill:用户不需要知道该函数是如何实现的,所以它不应该被命名为FloodFillRecursive


实际上,FloodFillRecursive可能是内部函数的名称:包含实现的函数,由用户调用的函数调用的函数——因为它是递归的第二个函数。
理想情况下,该函数不应该对用户可见:它应该隐藏在您的库中(无论是真正隐藏,还是使用一些命名约定告诉用户他们不应直接调用它)

而且,这样,如果您更改实现,您将不会让您的用户调用FloodFillRecursive可能不再递归的函数。