#include <stdio.h>
int cnt = 0;
int sum(int x,int y){
if(x<y){
if(x<=y){
cnt = cnt + 1;
return x += sum(x+1,y);
}
else return 0;
}
else if(x>y){
if(y<=x){
cnt = cnt + 1;
return y += sum(x,y+1);
}
else return 0;
}
else{
cnt++;
return x;
}
}
int main(){
int x,y,z;
printf("첫번째 수를 입력 :"); scanf("%d",&x);
printf("두번째 수를 입력 :"); scanf("%d",&y);
z = sum(x,y);
printf("%d부터%d까지의 합계는 %d입니다.\n",x,y,z);
printf("함수 sum이 불린 횟수는 %d입니다.\n",cnt);
return 0;
}
현재 코드는 입력받은 두 숫자중에서 작은숫자에 +1을 한 값을 리턴시킨다음 순차합을 적은 코드인데 여기서 현재 sum 함수가 10번 사용되고 있습니다.
그런데 하고 싶은건 작은숫자에는 +1 을 큰 숫자에는 -1 을해서 리턴 시키면 sum 함수가 6번밖에 안써질건데 이걸 어떻게 코딩해야될지 모르겠습니다...
5개의 댓글
무분별한 사용은 차단될 수 있습니다.
스비니
return x + sum(x+1, y-1) + y 을 하고싶은 거잖아. (단 x<y)
이에 맞는 조건을 한 번 생각해보면 좋을 것 같아.
x와 y의 차이가 3인 경우, 2인 경우, 1인 경우, 0인 경우를 각각 천천히 생각해보고 코딩해보면 좋을 것 같은데?
VisualArt
한번 도전해보겠습니다
0살대마법사
개드립엔 들여쓰기가 안되나 코드보기 엄청 불편하네
나개붕이여기어둠속에있다
x + sum이랑 y + sum 리턴하면 될듯
나개붕이여기어둠속에있다
그리고 if 안에 if 넣은건 빼는게 깔끔할듯