die Berechnung der Fakultät im Schleifenkörper solltest Du auch nochmal überdenken. Bei jedem Durchlauf wird der Variablen "fakultaet" einer neuer Wert zugewiesen (n*a). Die Fakultät berechnet sich aber anders:
Rekursives Programm für Fakultät in c
Download Zip: https://sormindpestna.blogspot.com/?file=2vI1KO
Die Methode fakultaet() wird hier initial mit dem Parameter 5 aufgerufen, sodass die Ausgabe nach Abschluss der Berechnung 120 ergibt. Das Ergebnis wird schließlich in main() auf die Konsole ausgegeben. Was geschieht hier beim Programmablauf genau?
Oafache Aufgam han mit Schleifn auf jedn Foi effektiver zum Lösn. Bei aufwendigere Probleme ko zwar a Lösung, de auf Rekursiona vazicht a schneja sei, aba de is oft ned mit am vatretbarn Aufwand zum programmiern.
Es gibt Probleme, die sich nicht "ohne Weiteres" iterativ lösen lassen, wie zum Beispiel das Traversieren beliebig verschachtelter Datenstrukturen. Weiterhin ist die rekursive Sichtweise häufig mathematisch bereits bekannt und es ist schlicht einfacher, die Rekursion zu programmieren. Solange es nicht auf Geschwindigkeit ankommt, ist das die bessere Alternative.
Und schon sind wir fertig, wir können jetzt einfach die Funktion fakultaet(5); aufrufen, um die Fakultät von 5 zu berechnen und können diese dann zum Beispiel über ein Console.WriteLine(); ausgeben.
Tauschen wir die rekursive Methode durch eine nicht rekursive aus, so bekommen wir FakultaetDemo2. import info1.*;public class FakultaetDemo2{ public static void main(String[] args) System.out.print("n: "); int n = Console.in.readInt(); System.out.println("n! = "+fakultaet(n)); private static long fakultaet(int n){ long fakultaet = 1; int faktor = 1; while (faktor
Durch die Verwendung von Funktionen in Ihren C-Programmen können Sie sozusagen strukturiert programmieren, das heißt, einzelne Programmaufgaben werden von unabhängigen Codeabschnitten ausgeführt. Unabhängige Codeabschnitte klingt ziemlich nach der Definition, die ich Ihnen für die Funktionen gegeben haben, nicht wahr? Funktionen und strukturierte Programmierung sind eng miteinander verbunden.
Fügen Sie Ihrer Funktionsbibliothek eine Funktion zur Sortierung des Arrays hinzu, wobei über einen Parameter entschieden werden kann, ob auf- oder absteigend sortiert werden soll. Schreiben Sie ein kleines Testprogramm.
Wieso benutzten wir die Rekursionen dann wenn diese gleichwertig zu Iterativen Lösungen sind? Ja, diese Frage ist sehr interessant. Eine Rekursion und Iteration formulieren ein Problem in verschiedenen Wegen. Die eigentliche "Leistung" ist am Problem abhängig. Das heißt das eine Rekursive Lösung manchmal viel schneller als eine Iterative Lösung sein kann. Wenn ein großes Problem leicht und effizient in kleinere Problem "zerlegt" werden kann, dann werden natürlich mehrere kleine Probleme viel schneller als das große Problem gelöst. Manche Probleme sind mit iterativen programmieren viel schneller als mit rekursiven. 2ff7e9595c
Comentários