Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: dato000 en 27 Mayo 2010, 04:51 am



Título: problemas con algoritmos recursivos
Publicado por: dato000 en 27 Mayo 2010, 04:51 am
Bueno, tengo dos códigos que me han sacado mucho con esto de la recursividad.

Por favor solo necesito una mano, sobre todo con el segundo,

1) convertir un entero positivo a una base determinada (entre 2 y 16)
---Con recursividad---
El problema es que el número me sale al revés...

Código:
#include "iostream"
#include "conio.h"

using namespace std;

char numero_decimal(int N,int base)
{
      
        if(base<2||base>16){
                cout << "  LA BASE NO ESTA ENTRE LOS VALORES PERMITIDOS!!" <<  endl;
        }
        else{
                if(N<base){
                    cout << N;    
                }
                else{
                    
                    cout << N%base;
                        return numero_decimal(N/base, base);
                }    
        }
                    
        
            
    
}

int main()
{
        int N,B;  
        cout<<"Ingrese numero en base decimal (10) para empezar la conversion: ";
        cin>>N;
        cout<<"*** DEBE ESTAR EN EL RANGO 2 a 16***" << endl;
        cout<<"Ingrese base: ";
        cin>>B;
        cout<<"El numero en la base " << B<< " es:"; cout<<numero_decimal (N,B);
        
        cout<<endl;
        system("PAUSE");
        return 0;
}


-------------------

2) para un entero decimal positivo obtener todas las formas posibles de representar ese entero como la suma de enteros menores que él.

---Con el mismo cuento de la recursividad---

En este estoy más que perdido. Soy uno de tantos a los que la recursividad los ha dejado muy loco.

Ej:

2 -> 1+1
3 -> 2+1
       1+1+1
4 -> 3+1
       2+2
       2+1+1
       1+1+1+1

y así.

Realmente con este no se ni como empezar pues no se como retornar el entero de la forma que se pide.

esto es lo que tengo (que es practicamente nada)

Código:
#include "iostream"
#include "conio.h"

using namespace std;

int suma(int a){
    if(a==1)
            return 1;
    else{
            cout << a-1 << " + " << suma(a-1) << " + ";
    }
    
        
    
}

int main()
{
        int num;
        cout<<"Ingrese el numero para entregar las sumas: ";
        cin>>num;
        cout << suma(num);
        
        cout<<endl;
        system("PAUSE");
        return EXIT_SUCCESS;
}

Lh: No hagas doble post.

Nadie????? perdón por subir esto, pero ha pasado mucho tiempo y no he conseguido respuesta, y pues en el primer caso ya conseguir la solución por un amigo, pero el segundo?? nadie tiene algún dato??