INFORMATIK I

Übung 8 : Funktionen I


22. April 2015


Daniel Hentzen
dhentzen@student.ethz.ch




Übung 7 : Pointers



Theorie






  • Funktionen
    • Struktur
    • Arrays übergeben
    • call by value
    • call by reference
      • pointers
      • references
  • Rekursion



Funktionsstruktur



 




Arrays als Argumente übergeben




Array übergeben

  1. pointer auf das erste Element
  2. Grösse !




Call By Value


Call by Reference : Pointers


Call By Reference : Reference






Rekursion



Eine Funktion ist rekursiv, wenn sie sich in ihrer Definition selbst aufruft.




Beispiel : Fakultät




 Iterative Lösung  :



Rekursive Lösung

 



Beispiel : Fibonacci




Vorteile der Rekursion


  • Vereinfachung eines komplexen Problems in einfache Teilprobleme
  • einfache, mathematische Darstellung
  • iterative Lösungen sind oft komplizierter


Nachteile der Rekursion


  • oft langsamer als iterative Lösungen
  • kann zu "stack overflow" führen (zuviele Aufrufe, Rekursion zu tief...)



Food for thought

Einige Probleme mit eleganten rekursiven Lösungen : 

  • Potenzen
  • Summe eines Arrays
  • Maximum eines Arrays
  • Fraktale
  • Weg in einem Labyrinth
  • Sudoku
  • ...




Übung 8 : Funktionen I




Aufgabe 1 : GGT




ggT(a,b) = a, falls b = 0

ggT(a,b) = ggT(b, a % b), falls b != 0 



Aufgabe 2 : Geometrische Folge




a(0) ? 
q ?
was passiert bei jedem Schritt?

rekursiv : Basisfall?




Aufgabe 3 : Strings



b) 
  • 1. Zeichen gross
  • falls Leerzeichen --> nächstes Zeichen gross

c)
Vertauschen mit Zusatzvariable




Aufgabe 4 : UNIX : Find




find <Verzeichnis> -name "..." // Pfad anzeigenfind ./ -name "*.cpp" // alle cpp files anzeigen im aktuellen Verzeichnis
find <Verzeichnis> -name "..." -exec <Befehl> {} \; /* Befehl ausführen auf diesen Dateien */
find ./ -name "test.txt" -exec rm {} \; //findet und löscht "test.txt"

Übung 8 : Funktionen I

By Daniel Hentzen

Übung 8 : Funktionen I

  • 779