모두CBT

다음 C 언어로 작성된 함수는 정수 배열의 원소들의 총 합을 구하여 리… | [국회직 9급 컴퓨터일반] 16년 1회차 기출문제 상세 페이지

1[국회직 9급 컴퓨터일반] 16년 1회차
다음 C 언어로 작성된 함수는 정수 배열의 원소들의 총 합을 구하여 리턴하는 함수이다. ㉠의 위치에 들어가야 할 코드는?
(단, 함수의 첫 번째 인자는 배열의 시작 위치를 나타내는 포인터,  두 번째 인자는 배열의 크기임)
int sum(int* data, const int dsize)
{
if (dsize > 0)
return ㉠;
return 0;
}
1
*data + sum(data - 1, dsize + 1)
2
data + sum(data - 1, dsize + 1)
3
*data + sum(data - 1, dsize - 1)
4
*data + sum(data + 1, dsize - 1)
5
data + sum(data + 1, dsize - 1)
해설

㉠에는 *data + sum(data + 1, dsize - 1)이 들어가야 한다.

현재 원소 값에 나머지 배열의 합을 더하는 재귀 구조이다. 포인터는 다음 원소로 전진하고 크기는 1씩 줄어, dsize가 0이 되면 0을 반환하며 끝난다.

예를 들어 {1, 2, 3}이면 1 + (2 + (3 + 0)) = 6이 된다.

  • *data + sum(data - 1, dsize + 1): 포인터가 뒤로 가고 크기가 커져 재귀가 끝나지 않는다.
  • data + sum(data - 1, dsize + 1): 원소 값이 아닌 주소를 쓰고, 재귀도 끝나지 않는다.
  • *data + sum(data - 1, dsize - 1): 포인터가 배열의 앞쪽으로 벗어난다.
  • data + sum(data + 1, dsize - 1): *가 없어 원소 값이 아닌 포인터를 더하게 된다.

오류나 개정된 내용이 보이면 알려주세요

이어서 풀어보기

[국회직 9급 컴퓨터일반] 16년 1회차 20문항 이어서 보기문제·정답·해설을 한 페이지에서 이어서 볼 수 있어요국회직 9급 컴퓨터일반 기출문제 암기장 전체 보기