알고리즘 p.140 삽입정렬문제인데요.
그러면 K=1이 될때 반복을 빠져나와야 하지 않나요?
첫번째 반복할 때(i=2니까 k=1,1,-1)일때는 그럼 한번만 돌고 나와야 될꺼같은데
답지 디버깅을 보니까
k=0이 될때까지 한번 더 돌았더라구요.
A(K)는 A(0)이 되잖아요.
A(0)은 없는데 그래도 되나요?
안녕하세요.
해당 페이지 전문가의 조언에서도 언급했듯이 반복문의 반복 변수는 반복문을 빠져나갈때 증가치가 한번 더 적용된 값으로 빠져나옵니다.
즉 k가 3, 1, -1로 5부터 0까지 -1씩 증가한다고 하면
먼저 k가 3인 상태로 반복문을 수행합니다. 1회 수행
다음 증가치(-1)를 적용하여 k가 2가 된 후 종료 기준값(1)과 비교합니다. 아직 종료 기준값보다 작지 않으므로 반복문을 수행합니다. 2회 수행
다음 증가치(-1)를 적용하여 k가 1이 된 후 종료 기준값(1)과 비교합니다. 아직 종료 기준값보다 작지 않으므로 반복문을 수행합니다. 3회 수행
다음 증가치(-1)를 적용하여 k가 0이 된 후 종료 기준값(1)과 비교합니다. 종료 기준값보다 작으므로 반복문을 수행하지 않고 빠져나옵니다.
이와 같이 증가치를 적용한 후 종료 기준값과 비교하는 방식이므로 실제 반복문을 빠져나올때 반복 변수의 값은 종료 기준값보다 증가치가 한번 더 적용된 값으로 빠져나오게 됩니다.
오늘도 즐거운 하루 되세요.
"-
*2012-10-15 14:41:59
안녕하세요.
해당 페이지 전문가의 조언에서도 언급했듯이 반복문의 반복 변수는 반복문을 빠져나갈때 증가치가 한번 더 적용된 값으로 빠져나옵니다.
즉 k가 3, 1, -1로 5부터 0까지 -1씩 증가한다고 하면
먼저 k가 3인 상태로 반복문을 수행합니다. 1회 수행
다음 증가치(-1)를 적용하여 k가 2가 된 후 종료 기준값(1)과 비교합니다. 아직 종료 기준값보다 작지 않으므로 반복문을 수행합니다. 2회 수행
다음 증가치(-1)를 적용하여 k가 1이 된 후 종료 기준값(1)과 비교합니다. 아직 종료 기준값보다 작지 않으므로 반복문을 수행합니다. 3회 수행
다음 증가치(-1)를 적용하여 k가 0이 된 후 종료 기준값(1)과 비교합니다. 종료 기준값보다 작으므로 반복문을 수행하지 않고 빠져나옵니다.
이와 같이 증가치를 적용한 후 종료 기준값과 비교하는 방식이므로 실제 반복문을 빠져나올때 반복 변수의 값은 종료 기준값보다 증가치가 한번 더 적용된 값으로 빠져나오게 됩니다.
오늘도 즐거운 하루 되세요.
"