No tengo mucha practica con eso pero logre hacer un ejercicio que para mi ha sido algo duro jaja, pero logre hacer lo que postare mas abajo.
El usuario habia pedido que dado un numero como 3183 de 4 digitos.
comaparase cada digito con el ultimo y si fuera mayor o igual, se multiplicara por el seguiente.
El numero 3183 seria n = 3*8*3 que daria 72. El 1 se desecha ya que no es mayor que el ultimo.
Mi pregunta es....
¿Hay alguna forma mas facil de hacer que la que hice yo? Lo digo por que con recursivas no tengo NPI XDDD
Código C++:
Ver original
#include <iostream> using namespace std; int f ( int n ) { static int op = 0; static int a; static int u; if ( op == 0 ) { op++; a = 1; u = n % 10; } if ( n > 0 ) { if ( n % 10 >= u ) { a = a * ( n % 10 ); f ( n = n / 10 ); } else { cout << "Desechando la ultima posicion de n: " << n % 10 << ". Es menor que static u: " << u << endl; n = n / 10; cout << "n ahora contiene " << n << ", y se envia a f() para seguir multiplicando..." << endl; f ( n ); } } cout << "Retornando: " << a << endl; return a; } int main() { //funciona con numeros mayores que 4 digitos... lo que quepa en un int vamos XDDD, pero no poner numeros muy grandes o puedes literalmente causar un stackoverflow XD int n = 3183; // <---cambie aqui para ver diferentes resultados. cout << f ( n ) << endl; cin.ignore(); //pausa el programa return 0; }
¿Y ademas cual es la ventaja de usar eso?
Suerte chicos