Lenguaje de programación C, compilado con gcc, terminal bash en WSL
He escrito una función recursiva, para encontrar el número más bajo en una matriz, que funciona bien.
/*01*/ int minimo(int array[], int n)
/*02*/ {
/*03*/ static int min = 0;
/*04*/
/*05*/ if (n == N)
/*06*/ {
/*07*/ return array[n-1];
/*08*/ }
/*09*/ else
/*10*/ {
/*11*/ min = minimo(array, n+1);
/*12*/ if(array[n]<min){
/*13*/ min = array[n];
/*14*/ }
/*15*/ }
/*16*/ }
El único problema es que no debería funcionar, porque no devuelve "min" a la persona que llama ...
int main()
{
//Var
int array[N] = {10, 2, 5, 1, 7};
printf("Min: %d\n", minimo(array, 0));
}
Mi preocupación es en realidad un problema, pero no en mi máquina en la que la función funciona tan bien como está; es un problema en las computadoras portátiles e IDE de mis amigos, intenté copiar a XCode en la Macbook de un amigo y no funcionaría si la línea "return min"; no se agregó al final de la función.
Entre la línea 15-16 tengo que agregar return min;
/*15*/ }
return min;
/*16*/ }
Mis preguntas para usted son las siguientes:
- ¿Cómo puede una función devolver una variable automáticamente ?
- ¿Es posible que devuelva la única variable que creé (static int min)?
- ¿O es un "problema" relacionado con el atributo estático que tiene la variable?
- ¿Tiene algo que ver con la naturaleza de la función ( recursiva )?
Esta es mi primera publicación, por favor sea amable si no cumplo con alguna regla del foro.
main
sino del valor de retorno "automático" de una función en una implementación específica.
C
estándar particular devuelve cero en ausencia de una declaración de devolución.
-Wall
interruptor y ver qué le dice el compilador.
main
devuelve su función.