codepad
[
create a new paste
]
login
|
about
Language:
C
C++
D
Haskell
Lua
OCaml
PHP
Perl
Plain Text
Python
Ruby
Scheme
Tcl
#include <iostream> using namespace std; int f ( int n ) { static int op = 0; //permite el paso una sola vez en la primera llamada a la funcion static int a; //acumulador... guardara los numeros multiplicados static int u; //almacena el ultimo numero para hacer comparaciones //solo se entra aqui una vez if ( op == 0 ) { op++; a = 1; u = n % 10; } //si n es mayor que 0 seguimos acumulando if ( n > 0 ) { //...pero solo acumulamos si el ultimo digito de n es mayor que la variable estatica u. if ( n % 10 >= u ) { a = a * ( n % 10 ); f ( n = n / 10 ); //enviamos el 318 para seguir calculando } else { cout << "Desechando la ultima posicion de n: " << n % 10 << ". Es menor que static u: " << u << endl; n = n / 10; //Si el ultimo digito de n es manor que la variable estatica u nos deshacemos de el.... cout << "n ahora contiene " << n << ", y se envia a f() para seguir multiplicando..." << endl; f ( n ); //...y repetimos operacion } } 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 = 23523583; // <---mude aqui para ver los cambios =) cout << f ( n ) << endl; cin.ignore(); //pausa el programa return 0; }
Private
[
?
]
Run code
Submit