Test Foro de elhacker.net SMF 2.1

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...

#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)

#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??