Linguagem de programação C, compilada com gcc, terminal bash no WSL
Eu escrevi uma função recursiva, para encontrar o número mais baixo em uma matriz, que funciona muito bem.
/*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*/ }
O único problema é que não deve funcionar, porque não retorna "min" ao chamador ...
int main()
{
//Var
int array[N] = {10, 2, 5, 1, 7};
printf("Min: %d\n", minimo(array, 0));
}
Minha preocupação é realmente um problema, mas não na minha máquina na qual a função funciona tão bem quanto é; é um problema nos laptops e IDEs dos meus amigos, tentei copiar para o XCode no Macbook de um amigo e não funcionaria se a linha "return min"; não foi adicionado no final da função.
Entre a linha 15-16 eu tenho que adicionar return min;
/*15*/ }
return min;
/*16*/ }
Minhas perguntas para você são as seguintes:
- Como uma função pode retornar uma variável automaticamente ?
- É possível que ele retorne a única variável que eu criei (static int min)?
- Ou é um "problema" relacionado ao atributo estático que a variável possui?
- Tem algo a ver com a natureza da função ( recursiva )?
Este é o meu primeiro post, por favor, seja gentil se estou violando alguma regra do fórum.
main
mas sobre o valor de retorno "automático" de uma função em uma implementação específica.
C
padrão retorna zero na ausência de uma declaração de retorno.
-Wall
opção e ver o que o compilador diz.
main
função retorna.