演示良好使用相互递归的示例

5 algorithm recursion mutual-recursion

我想知道是否存在一个非人为的例子,其中相互递归是问题的最优雅解决方案,并且它不能轻易地减少/内联到单个递归函数.

我已经知道这个例子(来自维基百科)

function even?(number : Integer)
    if number == 0 then
        return true
    else
        return odd?(abs(number)-1)

function odd?(number : Integer)
    if number == 0 then
        return false
   else
        return even?(abs(number)-1)
Run Code Online (Sandbox Code Playgroud)

但严重的是,没有一个心智正常的人会以这种方式检查数字的平价.

我在这里检查了关于这个主题的上一个答案 - 是否有任何相互递归的例子?但没有一个答案是我正在寻找的.

我知道它在递归解析中很有用 - 可能是实现它的唯一逻辑方法,但我需要一个更清晰,更具体的例子(最好是数学例子).

谢谢你的帮助?

编辑:

由于显然每个互相递归函数的元组都可以简化为单个函数,我宁愿知道是否存在使用相互递归函数是最佳/最可读方式的情况.

MBo*_*MBo 5

用于绘制Sierpinski曲线(以及一些其他曲线)的相互递归代码看起来相当优雅.