📜  C++递归

📅  最后修改于: 2020-09-25 05:08:21             🧑  作者: Mango

在本教程中,我们将通过示例了解C++中的递归函数及其工作原理。

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

C++中的递归工作

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

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

下图显示了递归调用的方式。

递归一直持续到满足某些条件为止。

为了防止无限递归,可以在一个分支进行递归调用而另一个不进行递归调用的情况下使用if … else语句(或类似方法)。

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

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

#include 
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

析因程序的工作

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

递归的优缺点

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

C++递归的优点

C++递归的缺点