我能夠在大約5分鐘內使用Java解決Collatz猜想算法(不,我沒有試圖證明它)。如何解決C#中的Collatz猜想算法?
既然我正在學習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
}
這裏是在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,我得到沒有輸出和沒有錯誤。我只是一直等到永遠。如果它是一個無限循環,我最終會得到一個錯誤,對吧?
不,這不是一個家庭作業問題(這是2年前,當我在JAVA中做到這一點:)雖然我獨立學習C#。
有什麼麻煩? – harpo 2011-02-08 06:35:41
您忘了提及您當前的代碼究竟出了什麼問題。你有運行時異常嗎?編譯器錯誤?那個錯誤信息的內容是什麼? – 2011-02-08 06:38:59