Recursion 一般递归到尾部递归

Recursion 一般递归到尾部递归,recursion,tail-recursion,lambda-calculus,Recursion,Tail Recursion,Lambda Calculus,从理论上讲,是否有可能将各种一般递归转换为尾部递归?例如,从lambda微积分的角度来看,它们是等价的吗?那是我和一个熟人之间的辩论 我的观点是不可能每次都这样。例如,如果你有一个函数递归地调用自己两到三次,那么你就不能把所有的递归调用都变成尾部调用,对吗?还是总有办法将递归调用的数量减少到一个递归调用?否。如果无法将算法重写为只有尾部调用,如在树遍历中,则至少有一个调用不会处于尾部位置 有人可能会说,循环+显式堆栈是迭代的,但在我看来,它仍然是递归的,树遍历会像一般递归一样增长堆栈。您可能希望

从理论上讲,是否有可能将各种一般递归转换为尾部递归?例如,从lambda微积分的角度来看,它们是等价的吗?那是我和一个熟人之间的辩论


我的观点是不可能每次都这样。例如,如果你有一个函数递归地调用自己两到三次,那么你就不能把所有的递归调用都变成尾部调用,对吗?还是总有办法将递归调用的数量减少到一个递归调用?

否。如果无法将算法重写为只有尾部调用,如在树遍历中,则至少有一个调用不会处于尾部位置


有人可能会说,循环+显式堆栈是迭代的,但在我看来,它仍然是递归的,树遍历会像一般递归一样增长堆栈。

您可能希望将其放在程序员的堆栈交换上//