【发布时间】:2021-04-16 02:03:38
【问题描述】:
我是学习 C# 的初学者:
我需要使用二分法让计算机猜测用户的“幻数”5x。我知道我的if 语句有缺陷,但我很难将二进制搜索转换为代码。
用户在他们的脑海中选择数字,计算机猜测用户的数字,只允许 5 次机会。如果计算机猜出的数字低于用户的幻数,则用户选择 1,如果计算机猜出的数字高于用户的幻数,则选择 2,如果计算机猜对,则选择 3。
以下是我目前所拥有的。
using System;
namespace NumberGuessingGame
{
class Program
{
static void Main(string[] args)
{
int Low = 1;
int High = 100;
int DifferenceOfRange = High - Low;
int Midpoint = DifferenceOfRange / 2;
int MidValue = Low + Midpoint;
int Count = 0;
bool MagicNumber = true;
Console.WriteLine("Pick a magic number between 1 to 100. Press enter to continue");
Console.ReadKey();
Console.WriteLine("Is your magic number: {0}", MidValue);
Console.WriteLine(" 1: No my magic number is lower \n 2: No my magic number is greater \n 3: That is my magic number! ");
if (int.Parse(Console.ReadLine()) == 3)
{
Console.WriteLine("Computer Wins!");
MagicNumber = false;
}
while (Low <= High && MagicNumber && Count <= 5)
{
DifferenceOfRange = High - Low;
Midpoint = DifferenceOfRange / 2;
MidValue = Low + Midpoint;
if (Low < High && int.Parse(Console.ReadLine()) == 2)
{
Low = MidValue + 1;
Console.WriteLine("Your number is {0}", MidValue);
}
else if(Low > High && int.Parse(Console.ReadLine()) == 1)
{
High = MidValue - 1;
Console.WriteLine("Your number is {0}", MidValue);
}
else if (Count >= 5)
{
Console.WriteLine("Computer loses");
}
Count++;
}
}
}
}
【问题讨论】:
-
您需要提出一个具体的可回答问题。 “我很难将二进制搜索转换为代码”太宽泛/模糊,我们无法提供帮助。
-
每个 ReadLine() 读取一个 new 行
-
在 C# 中,在方法中声明的变量应该以小写字母开头。 PascalCase 用于在单词
class下方声明的public成员
标签: c# data-structures binary-search game-theory