Was ist das hier?

  • Eine Plattform von Flensburger Studenten für Flensburger Studenten
  • Ein Wiki zum Sammeln von Wissen
  • Ein Forum zum Austausch
  • Eine Wissensdatenbank zum Informatikstudium:
    • Programmieren in C, C#, PHP, Javascript, HTML, CSS
    • Datenbanken und Abfragen mit SQL
    • 2D / 3D - Gestaltung
    • Mathe, Physik, Gerätetechnik, RoBs
    • Audio- / Videotechnik
    • ...und vieles mehr

Anmelden

Warum registrieren?

Weil besser als gut!

 

C-sharp-rekursion

Grundsätzliches

  • Rekursion ist ein Verfahren zur Problemlösung
  • ein rekursives Verfahren teilt ein großes Problem in kleine 'gleichartige’ Probleme (allgemeiner Fall, general Case)
  • es muss ein kleines’’, ohne Rekursion direkt lösbares Problem geben. (Terminierungsfall, Base Case)
  • es gibt immer eine nicht rekursive Lösung
Beispiele
a) S(n) sei die Summe der ersten n ganzen Zahlen mit S(1) = 1
general Case: S(n) = S(n-1) + N (S(n) = großes Problem, S(n-1)...= kleineres Problem)
S ist durch sich selbst definiert -> Rekursion
Base Case: S(1) = 1
C#
 
mit n > 0
 
static uint S(uint N)
{
   if(n == 1)
      return 1;
   return S(n-1) + n;
}
 
Jeder Aufruf eines Unterprogramms legt seine lokalen Variablen auf dem Laufzeitstack ab.

IMAG0055.jpg
IMAG0055.jpg

b) Fibonacci zahlen:
general Case: tex: F_i = F_i-2 + F_i-1 | i > 1
base case: tex: F_0 = 0 , F_1 =1
C#
 
static uint F(uint i)
{
   if( i == 0 || i == 1)
      return i;
   return F(i-2) + F(i-1);
}
 
Daraus ergeben sich folgende Aufrufe

IMAG0057.jpg
IMAG0057.jpg

Die Anzahl der Unterprogammaufrufe A_i zur Berechnung der i-ten Fibonacci-Zahl ist
tex: A_i = F_i+2 + F_i-1 - 1
tex: A_i > F_i
z.B. ist für die 42. Fibonacci-Zahl :
tex:A_4_2 = 866 988 873 Aufrufe notwendig
  • rekursive Lösungen sind meistens einfach
  • rekursive Lösungen sind bezgl. Speicherbedarf und CPU-Bedarf nicht optimal

Weitere Informationen

  • hier gehören noch externe Links hin


Kategorie: Programmieren3 | 3. Semester
| Mehr

Zahlen & Daten

  • 770 Seitenaufrufe
  • 562 Tage alt
  • 12 Versionen
  • Letzte Änderung: 07.03.2011 um 17:14 Uhr

Publish