2016-07-22 1 views
-3

나는 최악의 경우 점근 적 복잡도를 결정하기 위해 다음과 같은 기능 싶습니다 첫째

int j; 
float r = 1.0; 
for (int i=1; i<(log n); i++){ 
    j = 1; 
    while (j <= i^2){ 
     r*=2; 
     j++; 
} 
print(r); 
+5

이 코드는 컴파일되지 않기 때문에 그 힘든 것 닫히지 않은'{'라인 (3) 및'n' 로그에 . 나는 pseudocode의 맛을 고집하거나, 명확성을 위해 100 % 진짜 C++을 제안 할 것이다. 또한 시간 복잡성을 결정하기 위해 지금까지 무엇을 시도해 보았습니까? SO는 숙제 응답 서비스가 아닙니다. – CollinD

+0

n> = 1000 인 경우 플로트 오버플로가 발생합니다. –

답변

2

을, 나는 가정합니다 코드에서 i^2은 "i bitwise-XOR 2"가 아닌 "i"이 C++ 구문과 일치하지만 예측할 수없는 결과를 생성하기 때문에 "2의 거듭 제곱으로 생성되었습니다"를 의미합니다. http://www.trans4mind.com/personal_development/mathematics/series/sumGeneralPowersNaturalNumbers.htm :

시간 복잡성 합 우리는이 웹 페이지에서 정보를 사용하여, 2의 힘에 자연수의 합을 평가해야

![enter image description here

에 의해 주어진다.

enter image description here

은 그래서 시간 복잡도는

enter image description here

+0

옙 이제는 두 번째 방정식이 명확하지 않으므로 처음에는 '방정식이 하나'라고 생각했습니다. ',' – user463035818