Мне удалось решить алгоритм гипотезы Коллатца (нет, я не пытался это доказать) примерно за 5 минут с использованием Java.
Теперь, когда я изучаю 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, я получаю НЕТ вывода и НЕТ ошибки. Я просто жду вечно. Если бы это был бесконечный цикл, я бы в итоге получил ошибку, верно?
и нет, это не проблема домашней работы (хотя это было 2 года назад, когда я делал это в JAVA :).) Я изучаю C # самостоятельно.