

1 namespace 递归的理解
2 {
3 class Program
4 {
5 /// <summary>
6 /// 总结;写递归一定要考虑【临界条件】 防止死循环!;要【考虑要实现功能的规律】 要给原路返回的计算提供一个基础值(在阶乘里面表现为n==1 return 1;在斐波拉里面表现位第一位和第二位返回值是 1即这句 else if (n>=0&&n<=2)
7 //{
8 // return 1;
9 //}
10 /// </summary>
11 /// <param name="args"></param>
12 static void Main(string[] args)
13 {
14 //Console.WriteLine(GetCount(5));
15 //Console.WriteLine(GetPositionValue(30));
16 Console.WriteLine(GetSum(3));
17 Console.ReadKey();
18 }
19
20 //递归实现1--100的累加
21 static int GetCount(int n)
22 {
23 if (n ==1)
24 return 1;
25 else {
26 return n + GetCount(n - 1);
27 }
28 }
29
30 //递归实现斐波拉切数列 [1,1,2,3,5,8.......]
31 /// <summary>
32 /// 递归就是自己调用自己 递归的特点 一:必须要有是递归推出的零界条件 二:递归最后最后一步是一个原路返回的过程 三......
33 /// </summary>
34 /// <param name="n"></param>
35 /// <returns></returns>
36 static int GetPositionValue(int n)
37 {
38 if (n <0)
39 return 0;
40 else if (n>=0&&n<=2)
41 {
42 return 1;
43 }
44 else
45 {
46 return GetPositionValue(n-1) + GetPositionValue(n- 2);
47 }
48 }
49
50 /// <summary>
51 /// 原路返回的过程【记住】
52 /// </summary>
53 /// <param name="n"></param>
54 /// <returns></returns>
55 static int GetSum(int n)
56 {
57 if (n < 0)
58 return 0;
59 else if (n == 1)
60
61 return 1;
62
63 else
64 return n * GetSum(n - 1);
65
66 }//当GetSum(n-1)==1时返回 会执行return 1;这之后从这个}这里 会返回到 return n * GetSum(n - 1);这里进行计算
67 }
68 }
3 class Program
4 {
5 /// <summary>
6 /// 总结;写递归一定要考虑【临界条件】 防止死循环!;要【考虑要实现功能的规律】 要给原路返回的计算提供一个基础值(在阶乘里面表现为n==1 return 1;在斐波拉里面表现位第一位和第二位返回值是 1即这句 else if (n>=0&&n<=2)
7 //{
8 // return 1;
9 //}
10 /// </summary>
11 /// <param name="args"></param>
12 static void Main(string[] args)
13 {
14 //Console.WriteLine(GetCount(5));
15 //Console.WriteLine(GetPositionValue(30));
16 Console.WriteLine(GetSum(3));
17 Console.ReadKey();
18 }
19
20 //递归实现1--100的累加
21 static int GetCount(int n)
22 {
23 if (n ==1)
24 return 1;
25 else {
26 return n + GetCount(n - 1);
27 }
28 }
29
30 //递归实现斐波拉切数列 [1,1,2,3,5,8.......]
31 /// <summary>
32 /// 递归就是自己调用自己 递归的特点 一:必须要有是递归推出的零界条件 二:递归最后最后一步是一个原路返回的过程 三......
33 /// </summary>
34 /// <param name="n"></param>
35 /// <returns></returns>
36 static int GetPositionValue(int n)
37 {
38 if (n <0)
39 return 0;
40 else if (n>=0&&n<=2)
41 {
42 return 1;
43 }
44 else
45 {
46 return GetPositionValue(n-1) + GetPositionValue(n- 2);
47 }
48 }
49
50 /// <summary>
51 /// 原路返回的过程【记住】
52 /// </summary>
53 /// <param name="n"></param>
54 /// <returns></returns>
55 static int GetSum(int n)
56 {
57 if (n < 0)
58 return 0;
59 else if (n == 1)
60
61 return 1;
62
63 else
64 return n * GetSum(n - 1);
65
66 }//当GetSum(n-1)==1时返回 会执行return 1;这之后从这个}这里 会返回到 return n * GetSum(n - 1);这里进行计算
67 }
68 }