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