Theorem gegeben irgendein x, gcd (n, m), wo n < fib (x) ist rekursiv genannt gleich oder weniger als x mal.
Anmerkung: FIB (x) ist Fibonacci (x), wobei FIB (x) = FIB (x-1) + FIB (x-2)
Beweisen
Basis
jedes n = < FIB (1), gcd (n, m) gcd (1, m) nur einmal rekursiven
Inductive Schritt
annehmen, der Satz für jede Zahl kleiner als x halten ist, was bedeutet:
calls(gcd(n, m)) <= x for every n <= fib(x)
betrachten n, wobei n < = FIB (x + 1)
wenn m> FIB (x)
calls(gcd(n, m))
= calls(gcd(m, (n-m))) + 1
= calls(gcd(n-m, m%(n-m))) + 2 because n - m <= fib(x-1)
<= x - 1 + 2
= x + 1
wenn m = < FIB (x)
calls(gcd(n, m))
= calls(gcd(m, (n%m))) + 1 because m <= fib(x)
<= x + 1
Also gilt das Theorem auch für x + 1, als mathematische Induktion gilt das Theorem für jedes x.
Schlussfolgerung
gcd (n, m) ist, Θ (Rückwärts FIB), die Θ (logn) ist