앙앙123
98
2021-04-28 19:31:15 작성 2021-04-28 19:50:36 수정됨
2
105

c언어 교재에 나오는 프로젝트 질문입니다


1부터 입력값까지의 합을 출력하는 건데요 이게 출력은 되는데 실제 답하고 차이가 나네요..

짝수를 입력하면 답이 제대로 나오는데 홀수를 입력하면 다른 답이 나오네요

뭐가 문제인가요? 마땅히 물어볼 곳이 없어서 여기에 질문드립니다


#include <stdio.h>

int rec_func(int n);

int main(void)

{

int result;

int num;

printf("정수를 입력하세요:  ");

scanf_s("%d", &num);


result = rec_func(num);

printf("1부터 %d까지의 합: %lf\n",num, result);


return 0;

}

int rec_func(int n)

{


int sum;

sum = (((1 + n) / 2)*n);

return sum;




}

0
  • 답변 2

  • thkmon
    166
    2021-04-28 19:59:25

    제가 보기에는 n이 짝수일 때 문제가 될 것 같은데요.

    1부터 n까지 연속한 숫자의 합을 구하는 가우스 공식은 n(n + 1) / 2 입니다. 먼저 n을 곱하고 2로 나누셔야 하는데, 먼저 2로 나누고 n을 곱하게 되어 있네요.

    먼저 나누기를 하시면 int를 사용하고 계시기 때문에 정수가 아닌 소수가 나오게 되어서 곤란합니다.

  • 앙앙123
    98
    2021-04-28 20:12:24
    아 김사합니다 제가 착각했네요ㅠㅠ
  • 로그인을 하시면 답변을 등록할 수 있습니다.