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

C++ Tutoriales básicos

C++ Control de flujo

C++ que llama a sí misma

C++ Array & cadena

C++ Estructura de datos

C++ Clase & objeto

C++ Puntero

C++ Herencia

C++ Tutorial STL

C++ Map(almacenamiento)

C++ <cmath>

función recursiva

En este artículo, aprenderá a crear funciones recursivas. Las funciones que se llaman a sí mismas.que llama a sí mismafunción

En C se llama a la función recursiva. Y esta técnica se llama recursión. ++¿Cómo funciona?

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

La siguiente imagen muestra cómo se realiza la recursión.

La recursión continúa hasta que se cumpla alguna condición.

Para evitar la recursión infinita, se puede usar en una rama de la recursión y en la otra no.if ... else(o un método similar).

Ejemplo1:使用递归分解一个数字

// factorial(n) = 1*2*3*...*n
#include <iostream>
using namespace std;
int factorial(int);
int main() 
{
    int n;
    cout << "Ingrese un número para buscar su factorial: ";
    cin >> n;
    cout << "número " << n << " su factorial= " << factorial(n);
    return 0;
}
int factorial(int n) 
{
    if (n > 1) 
    {
        return n*factorial(n-1;
    }
    else 
    {
        return 1;
    }
}

Resultado de salida

Ingrese un número para buscar su factorial: 4
número 4el factorial de 24

Explicación de uso: ¿Cómo funciona este ejemplo?

Supongamos que el usuario ingresa4y se pasa a la función factorial().

  1. En la primera función factorial(), se pruebaifdentro de if true. return num*factorial(num-1La sentencia se ejecuta, llamando a la segunda función factorial() y pasando el parámetro num-1por3.

  2. En la segunda función factorial(), se prueba la expresión dentro de if true. return num*factorial(num-1La sentencia se ejecuta, llamando a la tercera función factorial() y pasando el parámetro num-1por2.

  3. En la tercera función factorial(), se prueba la expresión dentro de if true. return num*factorial(num-1La sentencia se ejecuta, llamando a la cuarta función factorial() y pasando el parámetro num-1es1.

  4. En la cuarta función factorial(), se prueba la expresión dentro de if(false).return 1Se ejecuta la sentencia ;, se regresa1Hasta la tercera función factorial().

  5. La tercera función factorial()2Regreso a la segunda función factorial().

  6. La segunda función factorial()6Regreso a la primera función factorial().

  7. Finalmente, la primera función factorial()24Regreso a la función main(), que se mostrará en la pantalla.