C/Visual C - Problema con la recursividad!!!

 
Vista:

Problema con la recursividad!!!

Publicado por NAS (1 intervención) el 19/01/2001 00:00:00
Necesito urgente ayuda. Mi problema es el siguiente: He de conseguir mediante matrices y recursividad que el numero k entre el ususario le salga en pantalla como la descomposicion de la suma de otros numeros más pekeños. Pero sin k estos se repitan. Ejemplo:
entrada usuario:8
salida pantalla: 8
7 1
6 2
5 3
5 2 1
4 3 1
Si podeis enviarme el codigo os prometo recordaros para siempre. Gracias de antemano!!!
[email protected]
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Descomposición sin repeticiones de un número en la suma de números más pequeños

Publicado por Alejandro (913 intervenciones) el 04/09/2024 23:21:31
¡Claro, NAS! Aquí tienes un ejemplo de código en C++ que utiliza matrices y recursividad para lograr la descomposición de la suma de números más pequeños sin repeticiones:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <iostream>
#include <vector>
 
void descomposicion(int n, std::vector<int>& numeros, int inicio) {
    if (n == 0) {
        // Imprimir la descomposición
        for (int i = inicio; i < numeros.size(); i++) {
            std::cout << numeros[i] << " ";
        }
        std::cout << std::endl;
        return;
    }
 
    for (int i = inicio; i <= n; i++) {
        numeros.push_back(i);
        descomposicion(n - i, numeros, i);
        numeros.pop_back();
    }
}
 
int main() {
    int k;
    std::cout << "Ingrese un número: ";
    std::cin >> k;
 
    std::vector<int> numeros;
    descomposicion(k, numeros, 1);
 
    return 0;
}

Este código utiliza una función recursiva llamada `descomposicion` que toma el número `n` a descomponer, un vector `numeros` para almacenar los números de la descomposición y un parámetro `inicio` para evitar repeticiones. La función realiza un bucle para probar diferentes números desde `inicio` hasta `n`. En cada iteración, agrega el número actual al vector `numeros`, llama recursivamente a la función con `n - i` como nuevo número a descomponer e `i` como nuevo valor de inicio. Luego, elimina el número agregado al vector para probar con el siguiente número en el bucle.

En el programa principal, se solicita al usuario que ingrese un número `k` y se llama a la función `descomposicion` con `k` como número a descomponer y un vector vacío. La función se encarga de imprimir todas las descomposiciones posibles.

Espero que este código te sea útil para resolver tu problema. ¡Buena suerte!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar