C-Programmiersprache, kompiliert mit gcc, Terminal Bash in WSL
Ich habe eine rekursive Funktion geschrieben, um die niedrigste Zahl in einem Array zu finden, was gut funktioniert.
/*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*/ }
Das einzige Problem ist, dass es nicht funktionieren sollte, weil es nicht "min" an den Anrufer zurückgibt ...
int main()
{
//Var
int array[N] = {10, 2, 5, 1, 7};
printf("Min: %d\n", minimo(array, 0));
}
Mein Anliegen ist eigentlich ein Problem, aber nicht auf meinem Computer, auf dem die Funktion einwandfrei funktioniert. Es ist ein Problem auf den Laptops und IDEs meiner Freunde. Ich habe versucht, auf dem Macbook eines Freundes auf XCode zu kopieren, und es würde nicht funktionieren, wenn die Zeile "return min". wurde am Ende der Funktion nicht hinzugefügt.
Zwischen Zeile 15-16 muss ich hinzufügen return min;
/*15*/ }
return min;
/*16*/ }
Meine Fragen an Sie lauten wie folgt:
- Wie kann eine Funktion eine Variable automatisch zurückgeben ?
- Ist es möglich, dass es die einzige Variable zurückgibt , die ich erstellt habe (static int min)?
- Oder ist es ein "Problem" im Zusammenhang mit dem statischen Attribut der Variablen?
- Hat es etwas mit der Art der Funktion zu tun ( rekursiv )?
Dies ist mein erster Beitrag. Bitte seien Sie freundlich, wenn ich gegen eine Forenregel verstoße.
main
sondern der "automatische" Rückgabewert einer Funktion in einer bestimmten Implementierung.
C
Standard in Abwesenheit einer Rückgabeanweisung Null zurückgibt.
-Wall
Schalter kompilieren und sehen, was der Compiler Ihnen sagt.
main
Funktion zurückkehrt.