Was bedeutet das return 1;?

4 Antworten

Das Ganze ist in einer Funktion:

int fakultät(int zahl) {
  if(zahl == 1)
    return 1;
  else
    return zahl * fakultät(zahl - 1);
}

Bei "return" wird der Wert, der dahinter steht an den Aufrufer zurückgegeben und die Funktion wird an der Stelle abgebrochen. Hier ein Beispiel mit fakultät(4):

  1. Wir rufen fakultät(4) auf.
  2. Ist die Zahl = 1? Nein, also gehen wir zu else:
  3. wir rechnen 4 * fakultät(3) und geben das zurück. Dafür muss jetzt erst einmal fakultät(3) berechnet werden:
  4. Ist die Zahl = 1? Nein, also gehen wir zu else:
  5. wir rechnen 3 * fakultät(2) und geben das zurück. Dafür muss jetzt erst einmal fakultät(2) berechnet werden:
  6. Ist die Zahl = 1? Nein, also gehen wir zu else:
  7. wir rechnen 2 * fakultät(1) und geben das zurück. Dafür muss jetzt erst einmal fakultät(1) berechnet werden:
  8. Ist die Zahl = 1? Ja, also geben wir einfach 1 zurück.

Insgesamt geben wir also 4 * (3 * (2 * 1)) zurück, was 24 ist.

Für fakultät(4) braucht man fakultät(3).
Für fakultät(3) braucht man fakultät(2).
Für fakultät(2) braucht man fakultät(1).
Für fakultät(1) ist der Rückgabewert direkt mit 1 gegeben.

Hoffe, das hilft etwas. Bei Fragen gerne fragen!

Woher ich das weiß:Hobby – Bin Hobbyprogrammierer und studiere Informatik

Kulena 
Fragesteller
 19.05.2024, 21:46

Sehr gut erklärt wirklich!!! Sowas habe ich gebraucht!

1

Die Funktion wurde ja von irgendeiner anderen Funktion aufgerufen. Und die aufrufende Funktion bekommt als Antwort für die Ausführung in diesem Fall die 1. Was die aufrufende Funktion damit macht, ist deren Sache:

Mag die Klammersprachen nicht so, deshalb ein Beispiel in leicht lesbarem Pascal:

function multiply(n1, n2: integer): integer;
begin
  multiply:=n1*n2;
// andere Möglichkeiten (je nach Pascaldialekt) wären
// result:=n1*n2;
// oder
// exit(n1*n2);
end;

function AmalB;
var a, b: integer
begin
  readln(a);
  readln(b);
  writeln(multiply(a,b);
end;

Die Funktion AmalB fragt erst einmal die Variablen a und b von der Tastatur ab. Dann ruft sie die Funktion multiply auf und übergibt dieser die Parameter a und b. Die Funktion multiply setzt diese in ihre eigenen Variablen n1 und n2 ein und multipliziert diese miteinander. Dann antwortet sie mit dem Ergebnis. AmalB schreibt dann das Ergebnis.

Gibt man für a 5 ein und für b 7, dann übergibt AmalB 5 und 7 an multiply, diese setzt 5 und 7 für n1 und n2 ein und liefert den Funktionswert 35 zurück. AmalB schreibt dann die 35.

das return 1; was bedeutet das?

Dass die Funktion den Integer 1 an den Aufrufer zurückgibt

Woher ich das weiß:Studium / Ausbildung – Abgeschlossenes Studium der Informatik (B.Sc.)

Kulena 
Fragesteller
 19.05.2024, 19:50

Wie bsp? meine zahl ist 5.

0
xxxcyberxxx  19.05.2024, 19:53
@Kulena
Wie bsp?

Beispiel als Pseudocode:

def quadrat(num):
  return num * num

ergebnis = quadrat(2)
print(ergebnis)

In dem Fall gibt die Funktion das Ergebnis der Rechnung num * num zurück ... Der Aufrufer ist quadrat(2), zurückgegeben wird 2*2 = 4

meine zahl ist 5.

Dann geh mal im Kopf oder auf Papier durch, was in deiner Funktion passiert.

1

Die Funktion gibt den int Wert 1 zurück.