나는이 범위 1-100에 숫자를 "추측"할 20 개 시도가이 기능 :이 반올림 문제를 우아하게 해결하는 방법은 무엇입니까?
int guess(int number) {
int start = 1;
int end = 100;
int count = 20;
int answer = 0;
while (count--) {
int half = start + round((double)(end - start)/2);
if (number < half) end = half;
else if (number > half) start = half;
else {
answer = half;
break;
}
}
if (answer > 0) return 20 - count;
else return 0;
}
문제는 지금 범위 반감의 결과를 반올림 한, 그것은 추측 할 수 있다는 것입니다 숫자 1, 그리고 만약 내가 둥글지 않으면 범위의 다른 극단을 추측 할 수 없다. -
문제의 근원은 명백한 원유 해킹 솔루션이지만, 나는 찾을 수없는 것 같다. 그것을 해결하는 우아한 방법.
이미 설명한대로 100에 대해 작동하지 않습니다. –
@ user3735658 : 시도해보십시오. 그런 중간 범위를 떠나지 않는 것을 기억하십시오. 어쨌든, 실제 오류와 그 근본 원인을 분명히하기 위해 다시 말하십시오. – Deduplicator
더 좋아합니다. –