是否存在仅以递归方式可行的算法?

时间:2017-07-04 17:33:58

标签: recursion iteration

算法是否只能以递归方式实现?如果是,那么如何识别这些算法呢?

将以下内容作为案例研究。

为了逼近指数,可以使用。

  

e f 1 + f(1 + f/2(1 + f/3(1 + f/4)))

这是一个使用递归在n步的级别计算此近似值的函数。

exp_approximation = function(f, n, i = 2)
{
    if (n == 1)
    {
        return( 1 + f/i )
    } else
    {
        1 + f/i * exp_approximation(f,n=n-1,i=i+1)
    }

}

是否可以使用迭代而不是递归来编写相同的算法?

我在R中编写了我的代码,但我欢迎使用伪代码解决其他一些常用语言,如C,C ++,Java,Python等......

1 个答案:

答案 0 :(得分:0)

是的,技术上可行。例如,请参阅this question了解一般转换方法。也就是说,许多算法在递归形式中更加直观(在函数式语言中可能更有效,但在命令式语言中则不然)。对于涉及重现的数学相关问题尤其如此,其中递归实际上是递归关系的表示。