Frage von Thesulit, 37

Habe eine If schleife in Pseudo code gegeben wie lange läuft sie?

Der Pseudocode lautet:

Function Simple(n)

if n <= 1 then return 1 else return n * Simple(n-1),

Im worst case wird die Funktion mit einem n > 1 aufgerufen, wodurch else aufgerufen wird, meine Frage dazu ist: Da im else die Funktion Simple wieder aufgerufen wird, ist das dann eine Schleife die erst Endet bis n wieder 1 ist? An einem konkreten Beispiel: Ich setzte n= 5 dann wird else aufgerufen und in else wieder Simple diesmal mit 4 aufgerufen dann passiert das gleich mit 3 dann mit 2 und dann mit 1 . Stimmt das so oder wird das else nur ein einziges mal ausgeführt? Welche Zahl wird beim Beispiel 5 jetzt zurück gegeben? Ich bin super verwirrt und weiß echt nicht wie ich das lösen soll.

Würde mich sehr freuen wenn mir jemand hier weiter helfen könnte.

Antwort
von TUrabbIT, 16

Das ist Rekursion, also eine Art Schleife. Der Else Fall wird für n>1 n-1 mal aufgerufen

Kommentar von Thesulit ,

Vielen Dank für deine Antwort! Könntest du mir erklären warum genau n-1 mal aufgerufen wird? :/

Kommentar von safur ,

Ich bin zwar nicht TUrabbIT, aber ich antworte mal.

Schreib es dir doch einfach mal auf

Fall n=3: Simple(3-1)
Fall n=2: Simple (2-1)       // --> 1 und Ende

Für n=3 wird die Funktion genau n-1, nämlich zwei Mal aufgerufen.

Kommentar von TUrabbIT ,

Danke safur,
Kleine Korrektur: Die Funktion wird insgesamt n-mal aufgerufen (den initialen Aufruf mitgerechnet) aber der else-Fall n-1 mal.

Nochmal als förmlichere Erklärung.

Der else-Fall wird aufgerufen solange n>1, also sind es n-1 mal. Denn für jede beliebige Zahl n > 1 aus den Natürlichen Zahlen, (z.B. 100) ist der Abstand von 1 zu n (100) genau n-1 (100-1=99).

Antwort
von cgimda, 2

Die Funktion wird n-mal aufgerufen. Der else-Zweig selbst wird n-1 mal aufgerufen.

Beispielsweise wird also bei Simple(5) die Funktion 5-mal aufgerufen, der else-zweig aber nur 4-mal.

Übrigens ist if keine Schleife, sondern eine Anweisung.

Keine passende Antwort gefunden?

Fragen Sie die Community