c++ - HILO 游戏,找不到号码时

标签 c++ recursion

我正在为学校开发一个 HILO 游戏,程序通过询问数字是高还是低来猜测用户的数字。我有代码在它猜对的地方工作,但我还需要一个案例,当用户“作弊”时,数字被猜到但用户再次选择高或低。 这就是我的代码:

    void GuessNumber(int lowVal, int highVal)
     {
        int midVal = 0;
        char userAnswer = '-';

        midVal = (highVal + lowVal) / 2;

        cout << "Is it " << midVal << " (l,y,h)? " << endl;
        cin >> userAnswer;

        if ((userAnswer != 'l') && (userAnswer != 'h'))
      {
         cout << "Your number is " << midVal << endl;
      }
       else {
         if (userAnswer == 'h')
          {
            GuessNumber(lowVal, midVal);
          }
            else if (userAnswer == 'l')
            {
             GuessNumber(midVal, highVal);
            }
           }

             return;
          }

最佳答案

除非你不知道,否则你不应该问用户更高/更低。因此,您唯一可以检测到作弊的情况是,当您知道答案是两个值(N 或 N+1)之一,并且您询问用户它是否为 N 而他们说它较低(或者您询问它是否为 N+1 而他们说得更高)。

所有其他情况都不值得担心,因为要么你已经知道确切的答案(用户不能欺骗你,只是告诉他们你知道答案),要么至少还剩下三个可能的答案(在这种情况下任何回应可能是正确的)。

关于c++ - HILO 游戏,找不到号码时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46385907/

相关文章:

c++ - 检查 vector 中的重复项

java - 以下情况的替代方案

PHP MySQL递归慢,如何加速?

c - 字符转二进制(ASCII)的递归函数

c++ - 为什么这个 Pascal Triangle 实现给我尾随零?

c++ - 带 or 表达式的 If 语句中的语法错误

c++ - 二叉搜索树根正在工作,但它不能有任何 child ?

c++ - 如何将十六进制字符串转换/粘贴为 vim 中的字节列表?

recursion - Elixir 和默认参数中的尾递归调用

c++ - 在字符串 C++ 中查找子字符串(在 "el"中查找 "hello")