Otra posible solución:
Código C++:
Ver original#include <iostream>
using namespace std;
int createProduct(int n){
if(n < 10)return n;
int last = n % 10;
int curr = (n /= 10) % 10;
return ((curr >= last)? curr : 1) * createProduct((n/10)*10 + last);
}
int main() {
cout << createProduct(3183) << endl;
return 0;
}
No es una buena idea utilizar variables estáticas en funciones recursivas, finalmente no dejan de ser variables globales con visibilidad a nivel de función, por lo que si hubieran llamadas concurrentes lo más probable es que no se obtendría el resultado esperado.