递归的精髓:
递归就是有去(递去)有回(归来),如下图所示。“有去”是指:递归问题必须可以分解为若干个规模较小,与原问题形式相同的子问题,这些子问题可以用相同的解题思路来解决,就像上面例子中的钥匙可以打开后面所有门上的锁一样;“有回”是指 : 这些问题的演化过程是一个从大到小,由近及远的过程,并且会有一个明确的终点(临界点),一旦到达了这个临界点,就不用再往更小、更远的地方走下去。最后,从这个临界点开始,原路返回到原点,原问题解决。
递归的三要素:
1.明确递归终止条件;
2.给出递归终止时的处理办法;
3.提取重复的逻辑,缩小问题规模。
上代码:
{
int n= Digui1(3);
Console.WriteLine(n);
Console.ReadLine();
}
private static int Digui1(int j)
{
if (j == 0)
return 0;
int i = Digui1(j - 1);//第一次:j=2; j=1;j=0;递进去的值
int n= i + j;//j=1,i=0;j=2,i=1;j=3,i=3;归来的值
return n;//n=1;n=3;
}