算法是否只能以递归方式实现?如果是,那么如何识别这些算法呢?
将以下内容作为案例研究。
为了逼近指数,可以使用。
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等......
答案 0 :(得分:0)
是的,技术上可行。例如,请参阅this question了解一般转换方法。也就是说,许多算法在递归形式中更加直观(在函数式语言中可能更有效,但在命令式语言中则不然)。对于涉及重现的数学相关问题尤其如此,其中递归实际上是递归关系的表示。