C++ 递归

调用自身的函数称为递归函数。而这种技术称为递归。


C++ 递归的工作原理

void recurse()
{
    ... .. ...
    recurse();
    ... .. ...
}

int main()
{
    ... .. ...
    recurse();
    ... .. ...
}

下图显示了递归如何通过反复调用自身来工作。

Working of C++ recursion
递归在 C++ 编程中的工作原理

递归将继续进行,直到满足某个条件。

为了防止无限递归,可以使用 if...else 语句 (或类似方法),其中一个分支进行递归调用,而另一个分支不进行。


示例 1:使用递归计算数字的阶乘

// Factorial of n = 1*2*3*...*n

#include <iostream>
using namespace std;

int factorial(int);

int main() {
    int n, result;

    cout << "Enter a non-negative number: ";
    cin >> n;

    result = factorial(n);
    cout << "Factorial of " << n << " = " << result;
    return 0;
}

int factorial(int n) {
    if (n > 1) {
        return n * factorial(n - 1);
    } else {
        return 1;
    }
}

输出

Enter a non-negative number: 4
Factorial of 4 = 24

阶乘程序的工作原理

Working of C++ Recursion Program
这个 C++ 递归程序是如何工作的

正如我们所见,factorial() 函数正在调用自身。但是,在每次调用中,我们将 n 的值减少了 1。当 n 小于 1 时,factorial() 函数最终会返回输出。


递归的优点和缺点

以下是使用 C++ 递归的优缺点。


C++ 递归的优点

  • 它使我们的代码更短、更简洁。
  • 递归在涉及数据结构和高级算法(如图和树遍历)的问题中是必需的。

C++ 递归的缺点

  • 与迭代程序相比,它占用了大量的堆栈空间。
  • 它使用更多的处理器时间。
  • 与等效的迭代程序相比,它可能更难调试。

另请阅读

在我们结束之前,让我们来测试一下您对 C++ 递归的了解!您能解决以下挑战吗?

挑战

编写一个函数来查找第 n 个斐波那契数。

  • 斐波那契数列以 01 开始。每个后续的数字都是前两个数字的和。
  • 斐波那契数列是:01123581321,...等等。
  • 给定 n,返回第 n 个斐波那契数。
  • 例如,如果 n = 7,则预期输出为 13
你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战