2013-06-23 7 views
0

누군가이 코드가 실제로 무엇을하고 있는지 몇 가지 밝힐 수 있습니까? 나는 그것이 꽤 간단해야한다고 생각하지만, 나는 지금 당장 붙어있어, 어떤 도움이 크게 감사하겠습니다!while 루프를 사용하여 3 차 전력 조절을 사용하는 알고리즘의 연산

read n; 
i := 1; 
while (i * i * i) <= n do 
    i := i + 1; 
output (i-1) 

또한이 계산 방법을 어떻게 계산할 수 있습니까? 미리 감사드립니다.

답변

0

n보다 클 때까지 i이 증가합니다. 따라서 i-1floor(cube_root(n))이 될 것이며 그게 반환됩니다.

실행 시간은 큐브 루트 n에 비례합니다. 루프의 반복 횟수가 실행되기 때문입니다.

+0

고마워요, 그래서 이것은 O (n^1/3)을 갖는 꽤 효율적인 알고리즘이라고 생각합니다. 아마 재귀 적으로 더 효율적일까요? – user113478

+1

Newton 's 나 Halley 's와 같은 [iterative method] (https://en.wikipedia.org/wiki/Cube_root#Numerical_methods)를 사용하면 훨씬 더 효과적 일 수 있습니다. 그것이 당신이 당신의 초기 추측을 선택하는데주의를 기울일 필요가 있다고 말했지만, 그것은 훨씬 빨라야합니다. –