多个语句太多,能化整为零最好, 分成两句或更多.
private void button1_Click(object sender, EventArgs e)
{
lblN.Text = f(Convert.ToInt32(textBoxN.Text)).ToString();
}
private long f(int n)
{
if (n == 1)
{
return 1;
}
long ret;
ret = f(n - 1) + n;
return ret;
}
这个源代码是一个递归. 上面的测试 完全通过, 但是看了 老师的代码, 有一心得,特此写下. 望以后谨记!!
private void button1_Click(object sender, EventArgs e)
{
// 此处改为了两句,使代码看起来简洁一些, 也清楚明了一些.
long n = Convert.ToInt32( textBoxN.Text );
lblN.Text = f( n ).ToString();
}
private long f(int n)
{
if (n == 1)
{
return 1;
}
long ret;
ret = f(n - 1) + n;
return ret;
}
其中改动了如下所示:
long n = Convert.ToInt32( textBoxN.Text );
lblN.Text = f( n ).ToString();
递归编程的模式
1.每个递归函数的开头一定是判断递归结束条件是否满足的语句(一般是if 语句)
2.函数体一定至少有一句是"自己调用自己"的,
3.每个递归函数一定有一个控制递归可以终结的变量(通过是做为函数的参考而存),每次自已调用自己时,此变量会变化.(一般是变小),并传递给被调用的函数.