C programming language, compiled with gcc, terminal bash in WSL
I have written a recursive function, to find the lowest number in an array, which works just fine.
/*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*/    }
The only problem is that it shouldn't work, because it doesn't return "min" to the caller...
int main()
{
    //Var
    int array[N] = {10, 2, 5, 1, 7};
    printf("Min: %d\n", minimo(array, 0));
}
My concern is actually a problem, but not on my machine onto which the function works just fine as it is; it is a problem on my friends' laptops and IDEs, I tried copying to XCode on a friend's Macbook and it wouldn't work if the line "return min;" wasn't added at the end of the function.
Between line 15-16 I have to add return min;
/*15*/      }
            return min;
/*16*/    }
My questions for you are the following:
- How can a function return a variable automatically?
- Is it possible that it does return the only variable that I created (static int min)?
- Or is it a "problem" related to the static attribute that the variable has?
- Does it have anything to do with the nature of the function (recursive)?
This is my first post, please be kind if I'm breaking any forum rule.
 
     
     
     
     
     
    