Die Laufzeit von GCD-Funktion Rekursiv (Euklid-Algorithmus)

Habe ich nur in der Lage gewesen zu finden, Beiträge über wie die Umsetzung der gcd-Funktion sowohl rekursiv und iterativ, aber ich konnte nicht finden, diese. Ich bin sicher, dass es auf Stackoverflow allerdings konnte ich es nicht finden, so dass ich entschuldige mich wenn es einen doppelten post.


Ich habe mir bei der Analyse auf Wikipedia (hier) und konnte nicht verstehen, Ihre Wiederholung Bezug.

Betrachten Sie die folgende Implementierung der GCD-Funktion rekursiv implementiert in C. Es hat eine vor-Voraussetzung, dass beide zahlen müssen positiv sein, aber irrelevant für die Laufzeit.

int gcd( int const a, int const b ) {
  //Checks pre conditions.
  assert( a >= 0 );
  assert( b >= 0 );

  if ( a < b ) return gcd( b, a );

  if ( b == 0 ) return a;

  return gcd( b, a % b );
}

Durchführung einer Analyse über die Laufzeit finde ich, dass jede operation ist O(1) - und daher wissen wir das Wiederauftreten Beziehung so weit ist: T(n) = O(1) + ???. Jetzt analysieren die rekursiven Aufruf, ich bin mir nicht sicher, wie Sie zu interpretieren ist a (mod b), wie meine rekursiven Aufruf korrekt zu sagen, meine Wiederholung Bezug.

InformationsquelleAutor Jacob Pollack | 2013-08-08

Schreibe einen Kommentar