C#学习笔记
递归算法
private void btn_digui_Click(object sender, EventArgs e)
{
int P_int_temp;
if (int.TryParse(txt_value.Text,out P_int_temp))
{
lbl_result.Text = "计算结果为:" + Get(P_int_temp).ToString();
}
else
{
MessageBox.Show(
"请输入正确的数值"
);
}
}
///<summary>
/// 递归算法
/// </summary>>
/// <patam name='i'>参与计算的数值</param>
/// <returns>计算结果</returns>
int Get(int i)
{
if (i < 0)
return 0;
if (i >= 0 && i <= 2)
return 1;
else
return Get(i - 1) + Get(i - 2);
}
C# 中,每建立一条线程会被分配大约1MB大小的地址空间,由于线程栈有固定大小,如果进行递归的层次太深,有可能会出现溢出。
多线程技术
private void btn_begin_Click(object sender, EventArgs e)
{
int p_int_x = 10;
int p_int_y = 60;
for (int i = 0; i < 100; i++)
{
Button bt = new Button();
bt.Text = (i + 1).ToString();
bt.Name = (i + 1).ToString();
bt.Width = 35;
bt.Width = 35;
bt.Location = new Point(p_int_x, p_int_y);
bt.Click += new EventHandler(bt_Click);
p_int_x += 36;
if ((i + 1) % 10 == 0)
{
p_int_x = 10;
p_int_y += 36;
}
Controls.Add(bt);
}
Thread G_th = new Thread(delegate ()//新建线程,使用了委托的方法,当线程开始执行时,将会执行委托中定义的方法。
{
int P_int_cont = 0;
while (true) //开始无限循环
{
P_int_cont = ++P_int_cont > 100000000 ? 0 : P_int_cont;
this.Invoke(
(MethodInvoker)delegate
{
lb_time.Text = P_int_cont.ToString();
});
Thread.Sleep(10000);
}
});
G_th.IsBackground = true;//设置线程为后台线程
G_th.Start();
//G_int_num = G_random.Next(1, 100);
btn_begin.Enabled = false;
}