English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

C++ 递归函数

在本文中,您将学习创建递归函数。调用自身的函数。

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

递归在C ++中如何工作?

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

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

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

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

示例1:使用递归分解一个数字

// n的阶乘 = 1*2*3*...*n
#include <iostream>
using namespace std;
int factorial(int);
int main() 
{
    int n;
    cout<<"输入一个数字来查找阶乘: ";
    cin >> n;
    cout << "数字 " << n <<" 的阶乘= " << factorial(n);
    return 0;
}
int factorial(int n) 
{
    if (n > 1) 
    {
        return n*factorial(n-1;
    }
    else 
    {
        return 1;
    }
}

输出结果

输入一个数字来查找阶乘: 4
数字 4的阶乘= 24

用法解释:这个实例是如何工作的?

假设用户输入了4,并将其传递给该factorial()函数。

  1. 在第一个factorial()函数中,测试if语句为true 内的表达式。return num*factorial(num-1语句被执行,它调用第二个factorial()函数,传递的参数num-1为3。

  2. 在第二个factorial()函数中,测试if语句为true内的表达式。return num*factorial(num-1语句被执行,它调用第三个factorial()函数,传递的参数为num-1为2。

  3. 在第三个factorial()函数中,测试if语句为true内的表达式。return num*factorial(num-1语句被执行,它调用第四个factorial()函数,并且传递的参数是num-1是1。

  4. 는 1。1네 번째 factorial() 함수에서 if 문이 false인 표현식을 테스트합니다. return

  5. ; 문장이 실행되고 돌아갑니다.2세 번째 factorial() 함수까지 돌아갑니다.

  6. 세 번째 factorial() 함수로 돌아갑니다.6두 번째 factorial() 함수로 돌아갑니다.

  7. 마지막으로, 첫 번째 factorial() 함수로 돌아갑니다.24마지막으로, 첫 번째 factorial() 함수는 메인() 함수로 돌아가며 화면에 표시됩니다.