Introducción a la recursividad y la iteración y ejemplos comunes (implementación en C++ y Python)

Introducción a la recursividad y la iteración y ejemplos comunes (implementación en C++ y Python)

De hecho, la idea central de la recursividad se puede resumir como "divide y vencerás". La recursividad suele ser más eficaz cuando el problema es significativamente autosimilar y puede descomponerse eficientemente en subproblemas más pequeños. Si un problema no se puede descomponer de manera eficiente, o hay una gran superposición entre los subproblemas, entonces usar la recursividad puede no ser la mejor solución.

Las funciones recursivas normalmente requieren una "condición de terminación" para indicar cuándo detener la recursividad. Cuando la función se llama a sí misma, cada vez los argumentos deben ser un conjunto de datos más pequeño y manejable para que la "condición de terminación" pueda abordarse de forma incremental.

En teoría, cualquier problema recursivo se puede resolver mediante iteración y viceversa. Esto se debe a que la recursividad y la iteración son técnicas de programación que se utilizan para resolver problemas que requieren operaciones repetidas, solo que pueden implementarse de manera diferente y de diferente manera.

Los algoritmos iterativos abordan gradualmente una solución a un problema realizando repetidamente una serie de operaciones. Cada iteración del proceso se denomina "iteración". Para las técnicas de programación, un conjunto de instrucciones se ejecuta repetidamente hasta que se cumple una determinada condición. La iteración generalmente se implementa a través de estructuras de bucle como bucles for o while.

A continuación se muestran algunos ejemplos del uso de funciones recursivas.

1. Calcula la suma de números enteros del 1 al n .

★Algoritmo recursivo implementado en C++:

#include <iostream>
using namespace std; 

int recursiveSum(int n) {
    if (n == 0) { // 终止条件
        return 0;
    } else {
        return n + recursiveSum(n - 1); // 递归调用
    }
}

int main() {
    int n;
    cout << "请输入一个正整数: ";
    cin >> n;
    
    int sum = recursiveSum(n); // 调用递归函数计算和
    
    cout << "从1到" << n << "的所有整数的和为: " << sum << endl;
    
    return 0;
}

★Código de implementación del algoritmo recursivo en Python:

def recursiveSum(n):
    if n == 0:
        return 0
    else:
        return n + recursiveSum(n - 1); # 递归调用

n = int(input("请输入一个正整数: "))
sum = recursiveSum(n)  # 调用递归函数计算和

print(f"从1到{n}的所有整数的和为: {sum}")  

★El algoritmo iterativo está implementado en C++:

#include <iostream>
using namespace std; 

int iterativeSum(int n) {
    int sum = 0;
    for(int i = 1; i <= n; i++) {
        sum += i;
    }
    return sum;
}

int main() {
    int n;
    cout << "请输入一个正整数: ";
    cin >> n;
    
    int sum = iterativeSum(n); // 调用递归函数计算和
    
    cout << "从1到" << n << "的所有整数的和为: " << sum << endl;
    
    return 0;
}

★El algoritmo iterativo se implementa en Python:

def iterativeSum(n):
    result = 0
    while n > 0:
        result += n
        n -= 1
    return result

n = int(input("请输入一个正整数: "))
sum = iterativeSum (n)  # 调用递归函数计算和

print(f"从1到{n}的所有整数的和为: {sum}")  

2. Calcular factoriales

Factorial:

Factorial se refiere al resultado de multiplicar un número entero positivo n y todos los números enteros positivos menores o iguales a n. Los símbolos suelen estar representados por el símbolo "!". Por ejemplo, el factorial de 5 se expresa como 5!, y la fórmula de cálculo es: 5! = 5 × 4 × 3 × 2 × 1 = 120. El factorial se puede calcular de forma recursiva o iterativa.

★Algoritmo recursivo implementado en C++ (código clave):

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

En este ejemplo, la función factorial(n) calcula el factorial de n llamándose a sí misma de forma recursiva. El caso básico es n == 0, en cuyo caso la función devuelve 1. En el caso recursivo, la función devuelve n * factorial(n - 1), que es la definición del factorial de n.

★La recursividad se implementa en Python (código clave):

def factorial(n):
    if n == 0:
        return 1
    else:
        return n * factorial(n - 1)

★El algoritmo iterativo se implementa en C++ (código clave):

int factorial(int n) {
    int result = 1;
    for (int i = 1; i <= n; i++) {
        result *= i;
    }
    return result;
}

★El algoritmo iterativo se implementa en Python (código clave):

def factorial_iterative(n):
    result = 1
    for i in range(1, n+1):
        result *= i
    return result

3. Calcular la secuencia de Fibonacci

Secuencia Fibonacci:

La secuencia de Fibonacci comienza desde 0 y 1, y cada término posterior es la suma de los dos anteriores. En otras palabras, el enésimo número de Fibonacci es igual a la suma del n-1.º número de Fibonacci y el n-2.º número de Fibonacci. Los primeros números de la secuencia de Fibonacci son: 0, 1, 1, 2, 3, 5, 8, 13, 21, .... La secuencia de Fibonacci se puede generar de forma recursiva o iterativa.

★Algoritmo recursivo implementado en C++ (código clave):

int fibonacci(int n) {
    if (n <= 1) {
        return n;
    } else {
        return fibonacci(n - 1) + fibonacci(n - 2);
    }
}

En este ejemplo, la función fibonacci(n) calcula el enésimo término de la secuencia de Fibonacci llamándose a sí misma de forma recursiva. La situación básica es n <= 1, en cuyo caso la función devuelve n. En el caso recursivo, la función devuelve fibonacci(n - 1) + fibonacci(n - 2), que es la definición de la secuencia de Fibonacci.

★Algoritmo recursivo implementado en Python (código clave) :

def fibonacci(n):
    if n <= 1:
        return n
    else:
        return fibonacci(n - 1) + fibonacci(n - 2)

★El algoritmo iterativo se implementa en C++ (código clave):

int fibonacci(int n) {
    if (n <= 0) {
        return n;
    } else {
        int a = 0, b = 1, c;
        for (int i = 2; i <= n; i++) {
            c = a + b;
            a = b;
            b = c;
        }
        return b;
    }
}

★El algoritmo iterativo se implementa en Python (código clave):

def fibonacci(n):
    if n <= 0:
        return n
    else:
        a, b = 0, 1
        for _ in range(2, n + 1):
            a, b = b, a + b
        return b

Supongo que te gusta

Origin blog.csdn.net/cnds123/article/details/132409886
Recomendado
Clasificación