【发布时间】:2011-06-23 05:57:32
【问题描述】:
我能够在大约 5 分钟内使用 Java 解决 Collatz 猜想算法(不,我没有试图证明它)。
现在我正在学习 C# 来制作 Web 应用程序,但我在做同样的事情时遇到了麻烦。 我只是想让用户输入一个数字,点击一个按钮,然后将输出打印到一个文本框。
这是我正在使用的按钮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
}
这里是 Collatz 方法:
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;
}
编辑 当我使用 VS.net 调试器并输入 2 之类的数字时,我得到 NO 输出和 NO 错误。我只能永远等待。如果它是一个无限循环,我最终会得到一个错误,对吧?
不,这不是家庭作业问题(虽然是 2 年前我在 JAVA 中做的 :)。)我正在独立学习 C#。
【问题讨论】:
-
您忘记提及您当前的代码到底出了什么问题。你得到一个运行时异常吗?编译器错误?该错误消息的文本是什么?
-
这听起来像是我的家庭作业,是吗?如果是这样,请相应地标记。 =)
-
使用更重要的变量名将有助于跟踪您正在尝试执行的操作。
-
在为大值设置字符串后,if (x==1) 中缺少一个中断