C#程序(自写的进十进转二进制,和输入IP差不多)算法问题

发布时间:2024-05-09 18:43 发布:上海旅游网

问题描述:

以下是windows控件应用程序,两textbox:textBox1,textBox2,一button1.
当我有textBox1输入0~255的十进制,再单击button1实现十进制转二进制(和输入IP差不多)。我想知道为什么method自身调用的次数这么多?和想像的不一样。

请朋友们帮一下。
int z = 0;
private void button1_Click(object sender, EventArgs e)
{
int a = 0;
if (textBox1.Text == "")
{
MessageBox.Show("请输入数值", "提示");
return;
}
try
{
a = Convert.ToInt32(textBox1.Text);
}
catch (Exception)
{
MessageBox.Show("你输入的数值不属于INT类型","");
return;
}
if (a < 0)
{
MessageBox.Show("所输入的数值不能是负数", "提示");
return;
}
if (a > 255)
{
MessageBox.Show("IP范围不能超过0~255", "提示");
return;
}
else if (a == 0)
{
textBox2.Text = "00000000";
return;
}
else
{
method(a,128);
}
textBox2.Text = method(a,128);
label7.Text = z.ToString();//把method自身调用的次数显示在label7.text里
z = 0;//int类型,用于记录递归法中,method自身调用的次数
}

public string method(int a1,int b1)
{
int a = a1;
int i = b1;
string s = "";
z++;
while (i > 0)
{
a = a - i;
if (a > 0)
{
s += "1";
i /= 2;
}
else if (a == 0)
{
s += "1";
break;
}
else if (a < 0)
{
s += "0";
a += i;
i /= 2;
method(a,i);
}
}
while (s.Length < 8)
{
s += "0";
}
return s.Substring(0, 8);
}

问题解答:

利用“递归法”,调用的次数肯定多了。这还用说?

热点新闻