2017-12-19 6 views
0

Meine Frage ist sehr einfach, gelehrt, dass ich nicht gut mit rekursiven Funktionen bin.rekursive Funktion zur Überprüfung der minimalen Anzahl

Schreiben Sie eine rekursive Funktion, die eine natürliche Folge von Zahlen (n> 0) bis zur Stoppbedingung von -1 scannt. Falls keine Zahlen in der Sequenz vorhanden sind, sollte das Programm -1 drucken. (Beispiel: für die Sequenz von 5, 7, 8, 4, 3, 5, -1, sollte das Programm druckt 3.

Das ist also, wie weit ich bekam:

void Ex1() { 
    printf("Enter sequence of numbers until -1"); 
    minimal_recursive_function(); 
} 

int minimal_recursive_function() { 
    int n, min; 
    scanf("%d", &n); 
    if ((min > n) && (n>0)) { 
      min = n; 
    } 
    if (n == -1) { 
     return min; 
    } 
    else { 
     minimal_recursive_function(min); 
    } 
    printf("%d", min); 
} 

Das Programm läuft natürlich nicht, da ich keinen Wert für Min. habe Ich kann n = min auch nicht setzen * note - Die rekursive Funktion sollte kein Argument von anderen Funktionen erhalten

Möchte natürlich Hinweise bekommen,

Antwort

0

Sie können Ihren Profi lösen Es ist nicht möglich, ein Argument zum ersten Mal zu übergeben, indem die erste Iteration als Spezialfall behandelt und separat behandelt wird, bevor die Rekursion gestartet wird. Auf diese Weise können Sie problemlos den Ausnahmefall behandeln, in dem vor -1 keine Werte eingegeben wurden, und Sie haben einen Wert, um die Rekursion zu starten.

void Ex1() { 
    int start; 
    scanf("%d", &start); 
    if (start == -1) printf("-1"); 
    else printf("%d", minimal(start)); 
} 

int minimal(int min) { 
    int n; 
    scanf("%d", &n); 
    if (n == -1) return min; 
    if (n < min) min = n; 
    return minimal(min); 
} 
+0

Ich musste zugeben, dass ich die Frage nicht richtig verstanden habe, und leider war das mein einziger Fehler. –

Verwandte Themen