문제 1+6+10+15+21+... 인 수열에서 20번째 항까지 합계를 구하는 순서도를 작성할때
증가값 i의 초기값을 0으로 하지않고 1로 하면 어떻게 되나요?
i=1로 가정했을때
J=1 , K=1으로 초기화 하고,
i=i+1
J=J+1
K=K+J
마지막에 조건을 i>=20
yes일때 K를 출력하게 하면 안되나요?
디버깅해도 헷갈려서 질문합니당
안녕하세요.
i, J, K를 모두 0으로 초기화하고 시작하면 1항부터 시작해서 20번째 항까지 진행합니다.
i, J, K를 모두 1로 초기화하고 시작하면 1항을 이미 저장하고 시작하는 것이 되므로 실제 처리는 2항부터 진행됩니다.
이때 문제에서 제시한 20번째 항까지의 합계
즉
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
1 + 3 + 6 + 10 + 15 + 21 + 28 + 36 + 45 + 55 + 66 + 78 + 91 + 105 + 120 + 136 + 153 + 171 + 190 + 210
합계 : 1540 이 됩니다.
i가 1이 된 후 첫 번째 항의 계산을 수행합니다. i가 2가 된 후 두 번째 항의 계산을 수행하고요.
그러므로 i가 20이 된 후 20번째 항의 계산을 수행합니다.
그래서 i < 20이 YES일 동안만 처리하는 것이죠.
이를 i >= 20이 NO일 동안 처리하도록 하여도 결과는 같습니다.
물론 i, J, K의 초기값을 1로 하고 수행해도 반복되는 횟수는 19번으로 줄어들지만(초기값 때문에 첫 항은 계산된 상태로 진행하므로) K의 최종 결과값 1540에는 변함이 없습니다.
오늘도 즐거운 하루 되세요.
-
*2016-04-21 09:21:30
안녕하세요.
i, J, K를 모두 0으로 초기화하고 시작하면 1항부터 시작해서 20번째 항까지 진행합니다.
i, J, K를 모두 1로 초기화하고 시작하면 1항을 이미 저장하고 시작하는 것이 되므로 실제 처리는 2항부터 진행됩니다.
이때 문제에서 제시한 20번째 항까지의 합계
즉
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
1 + 3 + 6 + 10 + 15 + 21 + 28 + 36 + 45 + 55 + 66 + 78 + 91 + 105 + 120 + 136 + 153 + 171 + 190 + 210
합계 : 1540 이 됩니다.
i가 1이 된 후 첫 번째 항의 계산을 수행합니다. i가 2가 된 후 두 번째 항의 계산을 수행하고요.
그러므로 i가 20이 된 후 20번째 항의 계산을 수행합니다.
그래서 i < 20이 YES일 동안만 처리하는 것이죠.
이를 i >= 20이 NO일 동안 처리하도록 하여도 결과는 같습니다.
물론 i, J, K의 초기값을 1로 하고 수행해도 반복되는 횟수는 19번으로 줄어들지만(초기값 때문에 첫 항은 계산된 상태로 진행하므로) K의 최종 결과값 1540에는 변함이 없습니다.
오늘도 즐거운 하루 되세요.