递归(Recursion)
递归是一种编程技术,其中一个函数直接或间接地调用其自身。递归函数通常包含一个或多个基准条件(base case),这些条件在递归的某个阶段会阻止函数继续调用自身,从而避免无限循环。递归通常用于解决可以分解为更小相似子问题的问题,如遍历树或图的深度优先搜索(DFS)、计算阶乘、斐波那契数列等。
递归函数的特点:
- 函数调用自身。
- 包含基准条件以终止递归。
- 通常用于解决可以分解为更小相似子问题的问题。
尾递归(Tail Recursion)
尾递归是一种特殊的递归形式,其中递归调用是函数体中的最后一个操作。在尾递归中,当前函数的状态(或返回值)直接依赖于递归调用的结果,而不需要进行任何进一步的计算。尾递归的一个重要性质是,理论上,编译器或解释器可以优化它,通过重用当前函数的调用帧来避免栈溢出,这种优化技术称为尾调用消除(Tail Call Elimination)。
尾递归函数的特点:
- 递归调用是函数体中的最后一个操作。
- 返回值直接依赖于递归调用的结果(或不需要返回值,但仅仅是调用自身然后返回)。
- 理论上可以通过尾调用消除来优化,避免栈溢出。
1万+

被折叠的 条评论
为什么被折叠?



