void mystery2 (int n)
{
int i;
for (i = 1; i <= n; i++) {
double x = i;
double delta = 1/(double)i;
while (x > 0)
x -= delta;
}
return 0;
}
http://pages.cs.wisc.edu/~vernon/cs367/notes/3.COMPLEXITY.html#application과 같은 추적 테이블을 사용하고 추측하지 않고이 프로그램의 시간 복잡성을 결정하는 방법은 무엇입니까?이 C 프로그램의 시간 복잡도를 결정하는 방법
'합계 [n^2, {n, 1, N}]'은 (n + 1) (2n + 1) n/6'이어야합니다. – phoeagon
오 10x 당신도 나를 위해 테이블을 만들었습니다! : P하지만 i/(1/i) == i^2를 얻는 "수학적"방법이 있습니까? 왜냐하면 강철은 "추측"이라고 생각하기 때문입니다. – user1980750
@ user1980750'x'의 초기 값은'i'입니까? 'while' 루프에서'x'는'1/i' 각각의 시간만큼 감소합니까? 따라서'x'가'0'이 되려면 이론적으로'i/(1/i) = i^2'가 필요합니다. 부동 소수점 산술로 인한 정밀도 손실로 인해 조금 더 많거나 적은 시간이 필요할 수 있습니다. 그러나 그것은이 내부 루프에 대한'O (n^2)'바운드를 변경해서는 안됩니다. – phoeagon