Algorithm 是否有一种算法的特征不';你没有递归形式吗?

Algorithm 是否有一种算法的特征不';你没有递归形式吗?,algorithm,recursion,Algorithm,Recursion,这个问题源于二叉树表示法(前序、后序、级序等)。其中一些可以以递归形式编写(例如,前序表示法),但我认为对于级序表示法没有递归算法(或者如果你知道如何做,请告诉我!)。所以我的问题是:是否有一种“类型”的算法不能以递归形式编写?如果是这样的话,这种类型的算法是如何描述的?(或者是否有一个系统可以证明某些算法不能以递归方式编写?我不一定认为这是一个重复的算法,但它是一个很好的参考。它证明了每个迭代算法都可以递归编写。出于这个原因,没有一类算法不具有递归形式 while Condition do S

这个问题源于二叉树表示法(前序、后序、级序等)。其中一些可以以递归形式编写(例如,前序表示法),但我认为对于级序表示法没有递归算法(或者如果你知道如何做,请告诉我!)。所以我的问题是:是否有一种“类型”的算法不能以递归形式编写?如果是这样的话,这种类型的算法是如何描述的?(或者是否有一个系统可以证明某些算法不能以递归方式编写?

我不一定认为这是一个重复的算法,但它是一个很好的参考。它证明了每个迭代算法都可以递归编写。出于这个原因,没有一类算法不具有递归形式

while Condition do Statement end 
可以等价地写

to Perform():
    if Condition then Statement; Perform() end

所有顺序程序都可以递归重写,没有循环

递归遵循基本情况。如果最终结果来自基本情况,则该算法具有递归形式。递归算法通常采用
F(n)=G(F(n-1)…
的形式,例如斐波那契级数。
F(n)=F(n-1)+F(n-2)
。这自然属于递归形式

while Condition do Statement end 
您的问题似乎更多地是关于算法的实现。 每个递归算法都可以递归和非递归实现。 因为递归本质上使用函数堆栈。可以在非递归实现形式中显式使用的堆栈

因此,您可以使用递归和非递归形式轻松地实现预订单、后订单和订单

至于级别顺序,我相信您也可以以递归形式实现它。例如(可能不是完全正确的形式)

void printLevelOrder(整数级,队列q){
如果(!q.isEmpty()){
节点curr=q.peek();
int size=q.size();
系统输出打印(“级别”+级别+:”);
对于(int i=0;i

但关键是算法的实现和数学形式不同

正如我所知,所有循环都可以转换为递归形式。相关:循环和递归在计算上是等价的。没有一种算法可以递归实现,但也不能迭代实现,反之亦然。无法递归表示的算法集是空的。递归只是langauge的运行时,为您维护一个调用堆栈。通过自己维护该堆栈,您总是可以用迭代替换递归。