Я смог решить алгоритм гипотезы Collatz (нет, я не пытался его доказать) примерно через 5 минут с использованием Java.Как я могу решить алгоритм гипотезы Collatz в C#?
Теперь, когда я изучаю C# для создания веб-приложений, у меня возникают проблемы с тем же. Я просто хочу, чтобы пользователь вводил номер , нажмите кнопку и напечатайте вывод в текстовое поле.
Вот метод обработчик события кнопки Click
Я использую:
protected void Button3_Click(object sender, EventArgs e)
{
string x = TextBox1.Text; //user entered a number
string y =collatz(x); //this function is below and returns a string
chatbox.Text = y; //output
}
А вот метод Коллатца:
public static string collatz(string y)
{
if (y == null)
return null;
double x = double.Parse(y); //x is my "n"
y = x.ToString(); //output string
double large = x; //keep track of biggest number
// the algorithm
// the redundancies (like x==1.. x!= 1) are part of troubleshooting :/
while (x > 1)
{
if (x % 2 == 0)
{
x = x/2;
if (x > large)
large = x;
if (x != 1)
y = y+" "+ x.ToString();
if (x == 1)
{
y = y + " " + x.ToString();
y = y + " largest number was " + large;
}
}
if (x % 2 != 0)
{
if (x == 1)
{
y = y+" "+ x.ToString();
y = y + " largest number was " + large;
}
x = (3 * x) + 1;
if (x > large)
large = x;
y = y+" "+ x.ToString();
}
}
return y;
}
EDIT , когда я использую vs.net отладчик и введите число, подобное 2, я получаю NO output и NO error. Я просто остаюсь ждать навсегда. Если бы это был бесконечный цикл, в конечном итоге я получил бы ошибку, верно?
и нет, это не проблема домашних заданий (это было 2 года назад, когда я сделал это в JAVA, хотя :).) Я изучаю C# самостоятельно.
В чем проблема? – harpo
Вы забыли упомянуть, что именно не так с вашим текущим кодом. Вы получаете исключение во время выполнения? Ошибка компилятора? Какой текст сообщения об ошибке? –
Это звучит как домашнее задание для меня, не так ли? Если да, пожалуйста, отметьте соответствующим образом. =) –