Download Objektorientierte Softwareentwicklung
Transcript
Kapitel 3 Imperative und funktionale Konzepte Wir können dieses Programm von Hand ausführen, indem wir den Methodenaufruf für fac für einen konkreten Parameter i durch die für diesen Wert zutreffende Alternative der Bedingungsabfrage ersetzen. Wir kennzeichnen einen solchen Ersetzungsschritt durch einen Pfeil →: fac(4) →4*fac(4-1) →4*fac(3) →4*(3*fac(3-1)) →4*(3*fac(2)) →4*(3*(2*fac(2-1))) →4*(3*(2*fac(1))) →4*(3*(2*(1*fac(1-1)))) →4*(3*(2*(1*fac(0)))) →4*(3*(2*(1*1))) →4*(3*(2*1)) →4*(3*2) →4*6 →24 3.4.1 Rekursion und Schleifen Schleifen und Rekursion sind beide dazu geeignet, um Code-Teile wiederholt auszuführen. Man kann auch argumentieren, dass Schleifen ein zusätzliches Konstrukt von Programmiersprachen sind, mit denen sich Rekursion optimierter ausführen lassen können. Betrachten wir die for-Schleife, so lässt sich diese eigentlich immer direkt in eine rekursive Methode umschreiben. 70