140쪽 알고리즘에 안쪽 반복문이 k=i-1, 1, -1로 되어 있는데 이것의 의미는 k가 i-1에서 1이 될 때까지 -1씩 증가하면서 반복문을 수행하라는 뜻인데요. p596에 디버깅 결과를 보면 i=2일때 k값이 1부터 0까지 되어 있습니다. 여기서 질문이 있습니다. 위에 조건에 분명 k가 1이 될 때까지만 돌리라고 햇는데 왜 디버깅에는 k가 0값까지 되어 있는지 궁금합니다. 밑에 i가 4일 때도 k값이 또 0이 들어가 있습니다.
한 번 실수로 인쇄되어 있는 것 같지 않아서 질문 올립니다.
다른 분의 질문의 대한 대답으로 아래 내용을 답해 주셧는데요.
-------------------------------------------------
반복문은 다음과 같이 처리됩니다.
반복 k = 3, 1, -1 -> k를 3부터 1까지 -1씩 증가하면서 반복문을 실행
k는 처음 3을 가지고 반복문을 실행합니다.
그런 다음 증가치를 적용해 k가 2가 된 상태에서 종료 기준값(1)과 비교하죠 아직 기준값보다 작지 않으므로 반복문을 실행합니다.
그런 다음 증가치를 적용해 k가 1이 된 상태에서 종료 기준값(1)과 비교하죠 아직 기준값보다 작지 않으므로 반복문을 실행합니다.
그런 다음 증가치를 적용해 k가 0이 된 상태에서 종료 기준값(1)과 비교하죠 기준값보다 작으므로 반복문을 빠져나옵니다.
이때 반복변수 k의 값은 0인 상태로 빠져나옵니다.
반복문을 빠져나온 뒤 반복변수 k의 값을 사용하는 경우에는 반복문을 빠져나올때의 k 값이 중요합니다.
하지만 일반적으로 반복변수는 반복문 안에서만 사용하므로 디버깅 할 때도 마지막 반복변수 값은 무시하는 경우가 많죠.
이 알고리즘 처럼 반복변수 k의 값이 반복문을 빠져나온 뒤에도 계속 사용될 경우에는 반복문을 빠져 나올때의 반복 변수의 값이 중요합니다.
오늘도 즐거운 하루 되세요.
-------------------------------------------------
위 답변으로 적용해 보자면 i가 3일 때와 5일 때는 왜 1까지만 디버깅을 하고 빠져 나오는 건가요?
그리고 앞에서 했던 다른 모든 반복문들은 i= 1, 10, 1이면 1부터 10까지만 하고 빠져 나왓엇잖아요? 위 답변대로라면 i값이 11으로 가져고 나와야 맞는 것 아닌가요?
안녕하세요.
반복문을 끝까지 수행을 한다면 K가 0이 되어서 반복문을 빠져나오지만
반복문 중간의 A(K) > KEY 조건이 NO인 경우는 그 당시의 K 값으로 반복문이 빠져나옵니다.
즉 A(K)가 KEY보다 작거나 같은 경우에는 반복문 중간에 빠져나오게 되며, 그 당시 K의 값을 갖고 빠져나오게 되는 것이죠.
오늘도 즐거운 하루 되세요.
-
*2016-04-08 09:11:25
안녕하세요.
반복문을 끝까지 수행을 한다면 K가 0이 되어서 반복문을 빠져나오지만
반복문 중간의 A(K) > KEY 조건이 NO인 경우는 그 당시의 K 값으로 반복문이 빠져나옵니다.
즉 A(K)가 KEY보다 작거나 같은 경우에는 반복문 중간에 빠져나오게 되며, 그 당시 K의 값을 갖고 빠져나오게 되는 것이죠.
오늘도 즐거운 하루 되세요.