@ronbay
No es recursivo, y tampoco sé si es lo que deseas, pero te puede servir para dar un paso más.
~ DtxdF
Código (c) [Seleccionar]
#include <stdio.h>
#include <stdlib.h>
#define MAX_N 9
typedef struct {
int max_number;
int index;
} number;
int main(void)
{
int n = 358267;
int array[MAX_N], *array_ptr = array;
int aux, tmp;
register int i = 0;
/* Extraemos cada digito */
while (n != 0 && i < MAX_N) {
*array_ptr++ = n % 10;
n /= 10;
i++;
}
/* Usamos el ordenamiento burbuja */
for (int aux_i = 0; aux_i < i; aux_i++) {
for (int aux_j = 0; aux_j < i-1; aux_j++) {
if (array[aux_j] > array[aux_j+1]) {
aux = array[aux_j];
array[aux_j] = array[aux_j+1];
array[aux_j+1] = aux;
}
}
}
number mynumber;
mynumber.index = 0;
mynumber.max_number = 0;
/* Extraemos el número mayor */
int j;
for (j = 0; j < i; j++)
if (array[j] > mynumber.max_number) {
mynumber.max_number = array[j];
mynumber.index = j;
}
/* Lo intercambiamos con el último y el número mayor */
tmp = array[--j];
array[j] = mynumber.max_number;
array[mynumber.index] = tmp;
/* Reconstruimos el número */
int k, r = 0;
for (k = 0; k < i; k++) {
r *= 10;
r += array[k];
}
printf("%d\n", r);
return EXIT_SUCCESS;
}
No es recursivo, y tampoco sé si es lo que deseas, pero te puede servir para dar un paso más.
~ DtxdF