문제 3번 질문입니다
for문이 총 10회 반복되는건 알겠는데 배열에 값이 어떻게 누적되서 답이 출력되는지 이해되지 않습니다
안녕하세요.
값이 누적되는 과정을 해설에 배열 그림과 함께 자세히 수록하였습니다.
for문의 원리를 염두에 두고 살펴보세요.
for (j = 0; j < 5; ++j)
for (i = 0; i < j; ++i)
numAry[j] += numAry[i];
위쪽 반복문
j는 초기값 0을 가지고 종료값(j < 5)과 비교합니다. 조건을 만족하므로 아래쪽 반복문을 수행합니다.
아래쪽 반복문
i는 초기값 0을 가지고 종료값(i < j)과 비교합니다. i와 j가 0이므로 조건을 만족하지 않으므로 아래쪽 for문을 빠져나와 다시 위쪽 반복문을 수행합니다.
위쪽 반복문
증가값(++j)이 적용되어 j는 1이 됩니다. 종료값(j < 5)과 비교합니다. 조건을 만족하므로 아래쪽 반복문을 수행합니다.
아래쪽 반복문
다시 반복문을 진입했으므로 i는 초기값 0을 가지고 종료값(i < j)과 비교합니다. i는 0 j는 1이므로 조건을 만족하므로 아래쪽 문장을 수행합니다.
numAry[j] += numAry[i];
numAry[1]은 현재 0이고 numAry[i]는 현재 1이므로 numAry[1]의 값이 1로 변경됩니다.
그 과정이 해설 디버깅 표의 2번째 줄의 내용입니다.
증가값(++i)이 적용되어 i는 1이 됩니다. 종료값(i < j)과 비교합니다. i와 j가 1이므로 조건을 만족하지 않으므로 아래쪽 for문을 빠져나와 다시 위쪽 반복문을 수행합니다.
위의 내용이 반복적으로 수행되면서 배열의 값이 누적됩니다.
앞서 언급한 내용을 염두에 두고 차분히 디버깅을 다시 한 번 수행해 보세요.
오늘도 즐거운 하루 되세요.
-
*2017-03-21 09:34:01
안녕하세요.
값이 누적되는 과정을 해설에 배열 그림과 함께 자세히 수록하였습니다.
for문의 원리를 염두에 두고 살펴보세요.
for (j = 0; j < 5; ++j)
for (i = 0; i < j; ++i)
numAry[j] += numAry[i];
위쪽 반복문
j는 초기값 0을 가지고 종료값(j < 5)과 비교합니다. 조건을 만족하므로 아래쪽 반복문을 수행합니다.
아래쪽 반복문
i는 초기값 0을 가지고 종료값(i < j)과 비교합니다. i와 j가 0이므로 조건을 만족하지 않으므로 아래쪽 for문을 빠져나와 다시 위쪽 반복문을 수행합니다.
위쪽 반복문
증가값(++j)이 적용되어 j는 1이 됩니다. 종료값(j < 5)과 비교합니다. 조건을 만족하므로 아래쪽 반복문을 수행합니다.
아래쪽 반복문
다시 반복문을 진입했으므로 i는 초기값 0을 가지고 종료값(i < j)과 비교합니다. i는 0 j는 1이므로 조건을 만족하므로 아래쪽 문장을 수행합니다.
numAry[j] += numAry[i];
numAry[1]은 현재 0이고 numAry[i]는 현재 1이므로 numAry[1]의 값이 1로 변경됩니다.
그 과정이 해설 디버깅 표의 2번째 줄의 내용입니다.
증가값(++i)이 적용되어 i는 1이 됩니다. 종료값(i < j)과 비교합니다. i와 j가 1이므로 조건을 만족하지 않으므로 아래쪽 for문을 빠져나와 다시 위쪽 반복문을 수행합니다.
위의 내용이 반복적으로 수행되면서 배열의 값이 누적됩니다.
앞서 언급한 내용을 염두에 두고 차분히 디버깅을 다시 한 번 수행해 보세요.
오늘도 즐거운 하루 되세요.