gcd 함수를 반복적으로 반복적으로 구현하는 방법에 대한 게시물 만 찾을 수 있었지만 찾을 수 없었습니다. 나는 Stackoverflow에 있다고 확신하지만 그것을 찾을 수 없기 때문에 중복 된 게시물 인 경우 사과드립니다.GCD 함수의 반복 실행 시간 (유클리드 알고리즘)
나는 위키 백과 (here)의 분석에보고하고 재발 관계를 이해할 수 없었다.
C에서 반복적으로 구현되는 GCD 함수의 다음 구현을 고려해보십시오. 두 숫자는 모두 양수 여야하지만 실행 시간과 관련이없는 사전 조건이 있습니다. 모든 작업이 O (1) 따라서 우리가 알고있는 점화식 지금까지 인 것을 나는 발견 실행 시간에 분석을 수행
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);
}
: T를 (N) = O (1) + ???. 이제는 재귀 호출을 분석하기 위해 재귀 관계를 올바르게 설명하는 재귀 호출로 a (mod b)를 해석하는 방법을 모르겠습니다.
https://en.wikipedia.org/wiki/Euclidean_algorithm#Algorithmic_efficiency –