@@ -6,7 +6,7 @@ public class 递归算法
66
77 /// <summary>
88 /// 使用C#语言编写的递归算法来计算1+2+3+4+…+100的结果
9- /// 最终结果是 :5050
9+ /// 最终输出结果是 :5050
1010 /// </summary>
1111 public static void RecursiveAlgorithmSum ( )
1212 {
@@ -32,26 +32,67 @@ public static int SumNumbers(int n)
3232
3333 /// <summary>
3434 /// 使用递归算法来实现求解斐波纳契数列中第30位数的值
35- /// 最终结果为832040
35+ /// 最终输出结果为:832040
3636 /// </summary>
3737 public static void FibonacciSum ( )
3838 {
39- int result = Fibonacci ( 30 ) ;
40- Console . WriteLine ( "第30位斐波那契数是:" + result ) ;
39+ int n = 30 ;
40+ int result = Fibonacci ( n ) ;
41+ Console . WriteLine ( "第 " + n + "位斐波那契数是:" + result ) ;
4142 }
4243
4344 public static int Fibonacci ( int n )
4445 {
45- if ( n <= 2 )
46+ if ( n <= 0 )
47+ {
48+ return 0 ;
49+ }
50+ else if ( n > 0 && n <= 2 )
4651 {
4752 return 1 ;
4853 }
4954 else
5055 {
56+ // 递归情况:调用自身计算前两个数字之和
5157 return Fibonacci ( n - 1 ) + Fibonacci ( n - 2 ) ;
5258 }
5359 }
5460
5561 #endregion
62+
63+ #region 递归算法数组求
64+
65+ /// <summary>
66+ /// 递归算法数组求
67+ /// 最终输出结果为:259
68+ /// </summary>
69+ public static void RecursiveArraySum ( )
70+ {
71+ int [ ] numbers = { 1 , 88 , 66 , 4 , 100 } ;
72+ int sum = ArraySum ( numbers , 0 ) ;
73+ Console . WriteLine ( "数组元素的总和为:" + sum ) ;
74+ }
75+
76+ /// <summary>
77+ /// 计算数组元素的总和
78+ /// </summary>
79+ /// <param name="arr">arr</param>
80+ /// <param name="index">index</param>
81+ /// <returns></returns>
82+ public static int ArraySum ( int [ ] arr , int index )
83+ {
84+ if ( index >= arr . Length )
85+ {
86+ // 基本情况:数组为空或者已经遍历完所有元素
87+ return 0 ;
88+ }
89+ else
90+ {
91+ // 递归调用:当前元素加上剩余元素的总和
92+ return arr [ index ] + ArraySum ( arr , index + 1 ) ;
93+ }
94+ }
95+
96+ #endregion
5697 }
5798}
0 commit comments