C语言数字猜测用二分搜索法实现(求思路)
书上的题目的思路,在例子里根本找不着。。就像发散思维一样。。可本来对C就不是很了解,我发散到哪里!只有到这里来求助了。
程序最初猜50,让其询问用户猜测值是大,小还是正确。如果小,则令下一次猜测为50和100的中值,也就是75.如果75大,则下一次猜75和50的中值,等等。使用这种二分搜索策略,起码如果用户没有欺骗,该程序会获得正确答案。
[解决办法]
- C/C++ code
int nData = 80;//比如猜80int a=-1;while(1){ printf("please input your number:\n"); scanf("%d", &a); if(a==nData) {//正确跳出 break; } if(a>nData) printf("your number is big!"); else printf("your number is small!");}
[解决办法]
int toguess;
int cmp(int val)
{
return val-toguess;
}
int guess(int beg,int end)
{
if(beg>end)
return;
int mid=(beg+end)/2;
if(!cmp(mid))
return mid;
if(cmp(mid)<0)
return guess(mid,end);
else
return guess(beg,end);
}
int main()
{
scanf("%d",&toguess);
printf("%d",guess(0,100));
return 0;
}